JavaScriptÔÇÖteki panoya nas─▒l kopyalar─▒m?


Al─▒nan cevaba git


Metni panoya kopyalamanın en iyi yolu nedir? (Çoklu tarayıcı)

Denedim:

 function copyToClipboard(text) {
    if (window.clipboardData) { // Internet Explorer
        window.clipboardData.setData("Text", text);
    } else {  
        unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
        const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);  
        clipboardHelper.copyString(text);
    }
}
 

ancak Internet ExplorerÔÇÖda bir s├Âzdizimi hatas─▒ veriyor. Firefox'ta yaz─▒yor unsafeWindow is not defined .

Fla┼čs─▒z g├╝zel bir numara: Trello kullan─▒c─▒n─▒n panosuna nas─▒l eri┼čir?


3084









Cevap say─▒s─▒n─▒ say: 30






genel bak─▒┼č

Panoya kopyalamak i├žin ├╝├ž ana taray─▒c─▒ API'si vard─▒r:

  1. Asenkron Pano API's─▒ [navigator.clipboard.writeText]
    • Metin odakl─▒ b├Âl├╝m Chrome 66'da kullan─▒labilir (Mart 2018)
    • Eri┼čim e┼čzamans─▒z ve JavaScript Promises kullan─▒yor , g├╝venlik kullan─▒c─▒s─▒ isterse (g├Âr├╝nt├╝leniyorsa) sayfadaki JavaScript'i engellememesi i├žin yaz─▒labilir.
    • Metin panoya do─črudan bir de─či┼čkenden kopyalanabilir.
    • Yaln─▒zca HTTPS ├╝zerinden sunulan sayfalarda desteklenir.
    • Chrome'da, etkin sekmelerdeki 66 sayfa, izin istemi olmadan panoya yazabilir.
  2. document.execCommand('copy')
    • ├ço─ču taray─▒c─▒ bunu ~ Nisan 2015 itibariyle desteklemektedir (a┼ča─č─▒daki Taray─▒c─▒ Deste─čine bak─▒n).
    • Eri┼čim senkronizedir, yani, g├╝venlik istemleriyle g├Âr├╝nt├╝leme ve kullan─▒c─▒ etkile┼čimi dahil olmak ├╝zere, tamamlan─▒ncaya kadar sayfadaki JavaScript'i durdurur.
    • Metin DOMÔÇÖdan okunur ve panoya yerle┼čtirilir.
    • Test s─▒ras─▒nda ~ Nisan 2015, yaln─▒zca Internet Explorer panoya yazarken izin istemlerini g├Âr├╝nt├╝leme olarak kaydedildi.
  3. Copy olay─▒n─▒ ge├žersiz k─▒lma
    • Copy olay─▒n─▒ ge├žersiz k─▒lma konusunda Clipboard API belgelerine bak─▒n .
    • Panoda g├Âr├╝nenleri herhangi bir copy olay─▒ndan de─či┼čtirmenize izin verir, d├╝z metin d─▒┼č─▒ndaki di─čer veri bi├žimlerini i├žerebilir.
    • Burada do─črudan soruya cevap vermedi─či i├žin a├ž─▒klanmad─▒.

Genel geli┼čim notlar─▒

Konsoldaki kodu test ederken panoyla ilgili komutlar─▒n ├žal─▒┼čmas─▒n─▒ beklemeyin. Genellikle sayfan─▒n aktif olmas─▒ (Async Clipboard API) olmas─▒ veya document.execCommand('copy') panoya eri┼čmesine izin vermek ( ) i├žin kullan─▒c─▒ etkile┼čimi (├Ârn. Bir kullan─▒c─▒ t─▒klamas─▒) gerekir .

Async + Fallback

Yeni Async Clipboard API'sinin taray─▒c─▒ deste─či nedeniyle, muhtemelen document.execCommand('copy') iyi bir taray─▒c─▒ kapsam─▒ elde etmek i├žin y├Ânteme geri d├Ânmeyi isteyeceksiniz .

─░┼čte basit bir ├Ârnek:

 function fallbackCopyTextToClipboard(text) {
  var textArea = document.createElement("textarea");
  textArea.value = text;
  document.body.appendChild(textArea);
  textArea.focus();
  textArea.select();

  try {
    var successful = document.execCommand('copy');
    var msg = successful ? 'successful' : 'unsuccessful';
    console.log('Fallback: Copying text command was ' + msg);
  } catch (err) {
    console.error('Fallback: Oops, unable to copy', err);
  }

  document.body.removeChild(textArea);
}
function copyTextToClipboard(text) {
  if (!navigator.clipboard) {
    fallbackCopyTextToClipboard(text);
    return;
  }
  navigator.clipboard.writeText(text).then(function() {
    console.log('Async: Copying to clipboard was successful!');
  }, function(err) {
    console.error('Async: Could not copy text: ', err);
  });
}

var copyBobBtn = document.querySelector('.js-copy-bob-btn'),
  copyJaneBtn = document.querySelector('.js-copy-jane-btn');

copyBobBtn.addEventListener('click', function(event) {
  copyTextToClipboard('Bob');
});


copyJaneBtn.addEventListener('click', function(event) {
  copyTextToClipboard('Jane');
}); 
 <div style="display:inline-block; vertical-align:top;">
  <button class="js-copy-bob-btn">Set clipboard to BOB</button><br /><br />
  <button class="js-copy-jane-btn">Set clipboard to JANE</button>
</div>
<div style="display:inline-block;">
  <textarea class="js-test-textarea" cols="35" rows="4">Try pasting into here to see what you have on your clipboard:

  </textarea>
</div> 

Bu pasaj─▒n Stack Overflow'un yerle┼čik ├Ânizlemesinde iyi ├žal─▒┼čmad─▒─č─▒n─▒ burada deneyebilirsiniz: https://codepen.io/DeanMarkTaylor/pen/RMRaJX?editors=1011

Asenkron Pano API's─▒

Chrome 66'daki izinler API'siyle "izin isteme" ve panoya eri┼čimi test etme yetene─či oldu─čunu unutmay─▒n.

 var text = "Example text to appear on clipboard";
navigator.clipboard.writeText(text).then(function() {
  console.log('Async: Copying to clipboard was successful!');
}, function(err) {
  console.error('Async: Could not copy text: ', err);
});
 

document.execCommand ( 'kopya')

Bu yaz─▒n─▒n geri kalan─▒ document.execCommand('copy') API'n─▒n ayr─▒nt─▒lar─▒na ve ayr─▒nt─▒lar─▒na girer .

Taray─▒c─▒ Deste─či

JavaScript document.execCommand('copy') deste─či b├╝y├╝d├╝, taray─▒c─▒ g├╝ncellemeleri i├žin a┼ča─č─▒daki ba─člant─▒lara g├Âz at─▒n:

Basit bir ├Ârnek

 var copyTextareaBtn = document.querySelector('.js-textareacopybtn');

copyTextareaBtn.addEventListener('click', function(event) {
  var copyTextarea = document.querySelector('.js-copytextarea');
  copyTextarea.focus();
  copyTextarea.select();

  try {
    var successful = document.execCommand('copy');
    var msg = successful ? 'successful' : 'unsuccessful';
    console.log('Copying text command was ' + msg);
  } catch (err) {
    console.log('Oops, unable to copy');
  }
}); 
 <p>
  <button class="js-textareacopybtn" style="vertical-align:top;">Copy Textarea</button>
  <textarea class="js-copytextarea">Hello I'm some text</textarea>
</p> 

Karma┼č─▒k ├ľrnek: Girdiyi g├Âstermeden panoya kopyala

Yukar─▒daki basit ├Ârnek , ekranda g├Âr├╝nen bir textarea veya input ├Â─če varsa harika ├žal─▒┼č─▒yor .

Baz─▒ durumlarda input / / textarea ├Â─česini g├Âr├╝nt├╝lemeden panoya metin kopyalamak isteyebilirsiniz . Bu, bunun ├╝zerinde ├žal─▒┼čman─▒n bir yoludur (temelde eleman ekle, panoya kopyala, eleman kald─▒r):

Google Chrome 44, Firefox 42.0a1 ve Internet Explorer 11.0.8600.17814 ile test edilmi┼čtir.

 function copyTextToClipboard(text) {
  var textArea = document.createElement("textarea");

  //
  // *** This styling is an extra step which is likely not required. ***
  //
  // Why is it here? To ensure:
  // 1. the element is able to have focus and selection.
  // 2. if element was to flash render it has minimal visual impact.
  // 3. less flakyness with selection and copying which **might** occur if
  //    the textarea element is not visible.
  //
  // The likelihood is the element won't even render, not even a
  // flash, so some of these are just precautions. However in
  // Internet Explorer the element is visible whilst the popup
  // box asking the user for permission for the web page to
  // copy to the clipboard.
  //

  // Place in top-left corner of screen regardless of scroll position.
  textArea.style.position = 'fixed';
  textArea.style.top = 0;
  textArea.style.left = 0;

  // Ensure it has a small width and height. Setting to 1px / 1em
  // doesn't work as this gives a negative w/h on some browsers.
  textArea.style.width = '2em';
  textArea.style.height = '2em';

  // We don't need padding, reducing the size if it does flash render.
  textArea.style.padding = 0;

  // Clean up any borders.
  textArea.style.border = 'none';
  textArea.style.outline = 'none';
  textArea.style.boxShadow = 'none';

  // Avoid flash of white box if rendered for any reason.
  textArea.style.background = 'transparent';


  textArea.value = text;

  document.body.appendChild(textArea);
  textArea.focus();
  textArea.select();

  try {
    var successful = document.execCommand('copy');
    var msg = successful ? 'successful' : 'unsuccessful';
    console.log('Copying text command was ' + msg);
  } catch (err) {
    console.log('Oops, unable to copy');
  }

  document.body.removeChild(textArea);
}


var copyBobBtn = document.querySelector('.js-copy-bob-btn'),
  copyJaneBtn = document.querySelector('.js-copy-jane-btn');

copyBobBtn.addEventListener('click', function(event) {
  copyTextToClipboard('Bob');
});


copyJaneBtn.addEventListener('click', function(event) {
  copyTextToClipboard('Jane');
}); 
 <div style="display:inline-block; vertical-align:top;">
  <button class="js-copy-bob-btn">Set clipboard to BOB</button><br /><br />
  <button class="js-copy-jane-btn">Set clipboard to JANE</button>
</div>
<div style="display:inline-block;">
  <textarea class="js-test-textarea" cols="35" rows="4">Try pasting into here to see what you have on your clipboard:

  </textarea>
</div> 

Ek Notlar

Yaln─▒zca kullan─▒c─▒ i┼člem yaparsa ├žal─▒┼č─▒r

T├╝m document.execCommand('copy') ├ža─čr─▒lar, bir kullan─▒c─▒n─▒n eyleminin do─črudan bir sonucu olarak yap─▒lmal─▒d─▒r, ├Ârn. T─▒klama i┼čleyicisi. Bu, kullan─▒c─▒n─▒n panosuyla kar─▒┼čmas─▒n─▒ beklemeyecekleri bir ├Ânlemdir.

Daha fazla bilgi i├žin Google Geli┼čtiriciler yay─▒n─▒ burada g├Âr├╝n .

Pano API's─▒

Tam Clipboard API taslak spesifikasyonunun burada bulundu─čunu unutmay─▒n: https://w3c.github.io/clipboard-apis/

Destekleniyor mu

  • document.queryCommandSupported('copy') true "taray─▒c─▒ taraf─▒ndan destekleniyorsa" komutu geri d├Ânmelidir .
  • ve e─čer ┼čimdi ├ža─čr─▒l─▒rsa ba┼čar─▒l─▒ olursa document.queryCommandEnabled('copy') geri d├Ân├╝n . Komutun kullan─▒c─▒ taraf─▒ndan ba┼člat─▒lan bir i┼č par├žac─▒─č─▒ndan ├ža─čr─▒ld─▒─č─▒ndan ve di─čer gereksinimlerin kar┼č─▒land─▒─č─▒ndan emin olmak i├žin kontrol ediliyor. true document.execCommand('copy')

Ancak taray─▒c─▒ uyumlulu─ču sorunlar─▒na bir ├Ârnek olarak, Google Chrome ~ Nisan-~ Ekim 2015 tarihleri true aras─▒nda yaln─▒zca document.queryCommandSupported('copy') komut kullan─▒c─▒ taraf─▒ndan ba┼člat─▒lan bir konudan ├ža─čr─▒ld─▒─č─▒nda geri d├Ând├╝ .

A┼ča─č─▒daki uyumluluk detay─▒na dikkat edin.

Taray─▒c─▒ Uyumlulu─ču Ayr─▒nt─▒s─▒

Bir kullan─▒c─▒ t─▒klamas─▒ sonucu ├ža─čr─▒lan / blok document.execCommand('copy') i├žine yap─▒lan basit bir ├ža─čr─▒, size en uygun kullan─▒m─▒ sa─člayacakken a┼ča─č─▒daki ko┼čullara sahip olacakt─▒r: try catch

Herhangi bir ├ža─čr─▒ document.execCommand , document.queryCommandSupported veya / blok document.queryCommandEnabled i├žinde sar─▒lmal─▒d─▒r . try catch

Farkl─▒ taray─▒c─▒ uygulamalar─▒ ve taray─▒c─▒ s├╝r├╝mleri, geri d├Ânmek yerine ├ža─čr─▒ld─▒─č─▒nda farkl─▒ istisna t├╝rleri ortaya ├ž─▒kar─▒r false .

Farkl─▒ taray─▒c─▒ uygulamalar─▒ hala ak─▒─óta ve Clipboard API hala taslakta, bu y├╝zden testinizi yapmay─▒ unutmay─▒n.


1990







Panoya otomatik kopyalama tehlikeli olabilir, bu nedenle ├žo─ču taray─▒c─▒ (IE hari├ž) ├žok zorla┼čt─▒r─▒r. ┼×ahsen, a┼ča─č─▒daki basit numaray─▒ kullan─▒yorum:

 function copyToClipboard(text) {
  window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
}
 

Kullan─▒c─▒ya, kopyalanacak metnin ├Ânceden se├žildi─či bilgi istemi kutusu sunulur. ┼×imdi Ctrl+ Cve Enter(kutuyu kapatmak i├žin) - ve i┼čte!

┼×imdi pano kopyalama i┼člemi G├ťVENL─░, ├ž├╝nk├╝ kullan─▒c─▒ manuel olarak yap─▒yor (ancak olduk├ža basit bir ┼čekilde). Tabii ki, t├╝m taray─▒c─▒larda ├žal─▒┼č─▒r.

 <button id="demo" onclick="copyToClipboard(document.getElementById('demo').innerHTML)">This is what I want to copy</button>

<script>
  function copyToClipboard(text) {
    window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
  }
</script> 


1235







A┼ča─č─▒daki yakla┼č─▒m Chrome, Firefox, Internet Explorer ve Edge ve SafariÔÇÖnin son s├╝r├╝mlerinde ├žal─▒┼č─▒r (Kopyalama deste─či, Ekim 2016ÔÇÖda yay─▒mlanan s├╝r├╝m 10ÔÇÖa eklenmi┼čtir).

  • Bir textarea olu┼čturun ve i├žeri─čini panoya kopyalamak istedi─činiz metne ayarlay─▒n.
  • Textarea ├Â─česini DOM'ye ekleyin.
  • Textarea'da metni se├žin.
  • Document.execCommand ("copy") i┼člevini ├ža─č─▒r─▒n
  • Textarea'y─▒ domdan kald─▒r─▒n.

Not: Javascript kodunun ayn─▒ senkronize ├ža─čr─▒s─▒ i├žinde eklenip kald─▒r─▒ld─▒─č─▒ndan, yaz─▒y─▒ g├Âremezsiniz.

Bunu kendiniz uyguluyorsan─▒z dikkat etmeniz gereken baz─▒ ┼čeyler:

  • G├╝venlik nedeniyle, bu yaln─▒zca t─▒klama gibi bir olay i┼čleyiciden ├ža─čr─▒labilir (Pencerelerin a├ž─▒lmas─▒ gibi).
  • IE, pano ilk kez g├╝ncellendi─činde bir izin ileti┼čim kutusu g├Âsterecektir.
  • Textarea odakland─▒─č─▒nda IE ve Edge kayd─▒r─▒l─▒r.
  • execCommand () baz─▒ durumlarda atabilir.
  • Bir textarea kullanmad─▒k├ža yeni sat─▒rlar ve sekmeler yutulabilir. (├ço─ču makale bir div kullanman─▒z─▒ tavsiye eder)
  • IE diyalogu g├Âsterildi─činde, textarea g├Âr├╝n├╝r, onu gizlemeniz veya IE'ye ├Âzg├╝ clipboardData api kullanman─▒z gerekir.
  • IE sisteminde, y├Âneticiler pano API'sini devre d─▒┼č─▒ b─▒rakabilir.

A┼ča─č─▒daki i┼člev, a┼ča─č─▒daki sorunlar─▒n hepsini m├╝mk├╝n oldu─čunca temizlemelidir. Herhangi bir sorun bulursan─▒z veya iyile┼čtirmek i├žin herhangi bir ├Âneriniz varsa l├╝tfen bir yorum b─▒rak─▒n.

 // Copies a string to the clipboard. Must be called from within an 
// event handler such as click. May return false if it failed, but
// this is not always possible. Browser support for Chrome 43+, 
// Firefox 42+, Safari 10+, Edge and IE 10+.
// IE: The clipboard feature may be disabled by an administrator. By
// default a prompt is shown the first time the clipboard is 
// used (per session).
function copyToClipboard(text) {
    if (window.clipboardData && window.clipboardData.setData) {
        // IE specific code path to prevent textarea being shown while dialog is visible.
        return clipboardData.setData("Text", text); 

    } else if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
        var textarea = document.createElement("textarea");
        textarea.textContent = text;
        textarea.style.position = "fixed";  // Prevent scrolling to bottom of page in MS Edge.
        document.body.appendChild(textarea);
        textarea.select();
        try {
            return document.execCommand("copy");  // Security exception may be thrown by some browsers.
        } catch (ex) {
            console.warn("Copy to clipboard failed.", ex);
            return false;
        } finally {
            document.body.removeChild(textarea);
        }
    }
}
 

https://jsfiddle.net/fx6a6n6x/


259







Ger├žekten basit bir ├ž├Âz├╝m istiyorsan─▒z (b├╝t├╝nle┼čmesi 5 dakikadan az s├╝r├╝yorsa) ve kutudan ├ž─▒kar ├ž─▒kmaz iyi g├Âr├╝n├╝yorsa, Clippy daha karma┼č─▒k ├ž├Âz├╝mlerin baz─▒lar─▒na g├╝zel bir alternatiftir.

GitHub'un kurucu orta─č─▒ taraf─▒ndan yaz─▒lm─▒┼čt─▒r. ├ľrnek Flash a┼ča─č─▒daki kodu g├Âmme:

 <object
   classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
   width="110"
   height="14"
   id="clippy">
  <param name="movie" value="/flash/clippy.swf"/>
  <param name="allowScriptAccess" value="always"/>
  <param name="quality" value="high"/>
  <param name="scale" value="noscale"/>
  <param NAME="FlashVars" value="text=#{text}"/>
  <param name="bgcolor" value="#{bgcolor}"/>
  <embed
     src="/flash/clippy.swf"
     width="110"
     height="14"
     name="clippy"
     quality="high"
     allowScriptAccess="always"
     type="application/x-shockwave-flash"
     pluginspage="http://www.macromedia.com/go/getflashplayer"
     FlashVars="text=#{text}"
     bgcolor="#{bgcolor}"/>
</object>
 

Kopyalaman─▒z gereken #{text} metinle ve #{bgcolor} renkli olarak de─či┼čtirmeyi unutmay─▒n .


92







Panoyu bir web sayfas─▒ndan okumak ve de─či┼čtirmek, g├╝venlik ve gizlilik endi┼čelerini art─▒r─▒r. Ancak, Internet ExplorerÔÇÖda bunu yapmak m├╝mk├╝nd├╝r. Bu ├Ârnek pasaj─▒ buldum :

     <script type="text/javascript">
        function select_all(obj) {
            var text_val=eval(obj);
            text_val.focus();
            text_val.select();
            r = text_val.createTextRange();
            if (!r.execCommand) return; // feature detection
            r.execCommand('copy');
        }
    </script>
    <input value="http://www.sajithmr.com"
     onclick="select_all(this)" name="url" type="text" /> 


82







K─▒sa bir s├╝re ├Ânce bu sorunla ilgili teknik bir blog yaz─▒s─▒ yazd─▒m (Lucidchart'da ├žal─▒┼č─▒yorum ve yak─▒n zamanda panomuzda bir revizyon yapt─▒k).

D├╝z metinleri panoya kopyalamak, bir sistem kopyalama etkinli─či s─▒ras─▒nda yapmak istedi─činizi varsayarak (kullan─▒c─▒ CtrlC, taray─▒c─▒n─▒n men├╝s├╝n├╝ basar veya kullan─▒r) olduk├ža kolayd─▒r .

 var isIe = (navigator.userAgent.toLowerCase().indexOf("msie") != -1 
           || navigator.userAgent.toLowerCase().indexOf("trident") != -1);

document.addEventListener('copy', function(e) {
    var textToPutOnClipboard = "This is some text";
    if (isIe) {
        window.clipboardData.setData('Text', textToPutOnClipboard);    
    } else {
        e.clipboardData.setData('text/plain', textToPutOnClipboard);
    }
    e.preventDefault();
});
 

Panoya metin koymak, bir sistem kopyalama olay─▒ s─▒ras─▒nda de─čil, ├žok daha zordur. Bu di─čer cevaplar─▒n baz─▒lar─▒, bunu yapman─▒n tek ├žapraz taray─▒c─▒ yolu olan Flash arac─▒l─▒─č─▒yla yapman─▒n ba┼čvuru yollar─▒na benziyor (anlad─▒─č─▒m kadar─▒yla).

Bunun d─▒┼č─▒nda taray─▒c─▒ baz─▒nda baz─▒ se├ženekler var.

Bu, IEÔÇÖde en basit olan, clipboardData nesnesine istedi─činiz zaman JavaScriptÔÇÖten a┼ča─č─▒daki adresten eri┼čebilirsiniz:

 window.clipboardData
 

(Bunu bir sistemin kesilmesi, kopyalanmas─▒ veya yap─▒┼čt─▒r─▒lmas─▒ d─▒┼č─▒nda ger├žekle┼čtirmeye ├žal─▒┼čt─▒─č─▒n─▒zda, IE, kullan─▒c─▒dan web uygulamas─▒ panosuna izin vermesini ister.)

Chrome'da, size panoya izin verecek bir Chrome uzant─▒s─▒ olu┼čturabilirsiniz (Lucidchart i├žin yapt─▒─č─▒m─▒z ┼čey budur). Ard─▒ndan, uzant─▒n─▒z kurulu olan kullan─▒c─▒lar i├žin sistem olay─▒n─▒ kendiniz ba┼člatman─▒z gerekir:

 document.execCommand('copy');
 

FirefoxÔÇÖun, kullan─▒c─▒lar─▒n belirli sitelere panoya eri┼čme izni vermesine izin veren baz─▒ se├ženekleri var gibi g├Âr├╝n├╝yor , ancak bunlar─▒n hi├žbirini ┼čahsen denemedim.


68







─░┼čte benim ondan almam ..

 function copy(text) {
    var input = document.createElement('input');
    input.setAttribute('value', text);
    document.body.appendChild(input);
    input.select();
    var result = document.execCommand('copy');
    document.body.removeChild(input)
    return result;
 }
 

52







clipboard.js , metin veya HTML verilerinin panoya kopyalanmas─▒na izin veren k├╝├ž├╝k, Flash olmayan bir yard─▒mc─▒ programd─▒r. Kullan─▒m─▒ ├žok kolay, sadece .js ekleyin ve ┼čunun gibi bir ┼čey kullan─▒n:

 <button id='markup-copy'>Copy Button</button>

<script>
document.getElementById('markup-copy').addEventListener('click', function() {
  clipboard.copy({
    'text/plain': 'Markup text. Paste me into a rich text editor.',
    'text/html': '<i>here</i> is some <b>rich text</b>'
  }).then(
    function(){console.log('success'); },
    function(err){console.log('failure', err);
  });

});
</script>
 

clipboard.js ayr─▒ca GitHub'da .

Not: Bu ┼čimdi kullan─▒mdan kald─▒r─▒ld─▒. Buraya g├Â├ž et .


47







ZeroClipboard, buldu─čum en iyi taray─▒c─▒ taray─▒c─▒ ├ž├Âz├╝m├╝d├╝r:

 <div id="copy" data-clipboard-text="Copy Me!">Click to copy</div>    
<script src="ZeroClipboard.js"></script>
<script>
  var clip = new ZeroClipboard( document.getElementById('copy') );
</script>
 

─░OS i├žin fla┼čs─▒z deste─če ihtiyac─▒n─▒z varsa, sadece geri d├Ân├╝┼č eklersiniz:

 clip.on( 'noflash', function ( client, args ) {
    $("#copy").click(function(){            
        var txt = $(this).attr('data-clipboard-text');
        prompt ("Copy link, then click OK.", txt);
    });
});  
 

http://zeroclipboard.org/

https://github.com/zeroclipboard/ZeroClipboard


34







├ťzerinde ├žal─▒┼čt─▒─č─▒m projelerden birinden, Zero Clipboard k├╝t├╝phanesini kullanan bir panoya kopyalayan bir jQuery eklentisi .

E─čer a─č─▒r bir jQuery kullan─▒c─▒s─▒ysan─▒z, kullan─▒m─▒ orijinal Zero Clipboard eklentisinden daha kolayd─▒r.


25







A┼ča─č─▒daki ├ž├Âz├╝m├╝ buldum:

Anahtar a┼ča─č─▒ i┼čleyicisi "pre" etiketini olu┼čturur. ─░├žeri─či bu etikete kopyalayacak ve sonra bu etikette bir se├žim yapaca─č─▒z ve i┼čleyicide true de─čerini d├Ând├╝rd├╝k. Bu, standart krom i┼čleyicisini ├ža─č─▒r─▒r ve se├žilen metni kopyalar.

Ve gerekirse, ├Ânceki se├žimi geri y├╝kleme i┼člevi i├žin zaman a┼č─▒m─▒ s├╝resini ayarlayabilirsiniz. Mootools ile ilgili uygulamam:

    function EnybyClipboard() {
     this.saveSelection = false;
     this.callback = false;
     this.pastedText = false;

     this.restoreSelection = function() {
       if (this.saveSelection) {
         window.getSelection().removeAllRanges();
         for (var i = 0; i < this.saveSelection.length; i++) {
           window.getSelection().addRange(this.saveSelection[i]);
         }
         this.saveSelection = false;
       }
     };

     this.copyText = function(text) {
       var div = $('special_copy');
       if (!div) {
         div = new Element('pre', {
           'id': 'special_copy',
           'style': 'opacity: 0;position: absolute;top: -10000px;right: 0;'
         });
         div.injectInside(document.body);
       }
       div.set('text', text);
       if (document.createRange) {
         var rng = document.createRange();
         rng.selectNodeContents(div);
         this.saveSelection = [];
         var selection = window.getSelection();
         for (var i = 0; i < selection.rangeCount; i++) {
           this.saveSelection[i] = selection.getRangeAt(i);
         }
         window.getSelection().removeAllRanges();
         window.getSelection().addRange(rng);
         setTimeout(this.restoreSelection.bind(this), 100);
       } else return alert('Copy not work. :(');
     };

     this.getPastedText = function() {
       if (!this.pastedText) alert('Nothing to paste. :(');
       return this.pastedText;
     };

     this.pasteText = function(callback) {
       var div = $('special_paste');
       if (!div) {
         div = new Element('textarea', {
           'id': 'special_paste',
           'style': 'opacity: 0;position: absolute;top: -10000px;right: 0;'
         });
         div.injectInside(document.body);
         div.addEvent('keyup', function() {
           if (this.callback) {
             this.pastedText = $('special_paste').get('value');
             this.callback.call(null, this.pastedText);
             this.callback = false;
             this.pastedText = false;
             setTimeout(this.restoreSelection.bind(this), 100);
           }
         }.bind(this));
       }
       div.set('value', '');
       if (document.createRange) {
         var rng = document.createRange();
         rng.selectNodeContents(div);
         this.saveSelection = [];
         var selection = window.getSelection();
         for (var i = 0; i < selection.rangeCount; i++) {
           this.saveSelection[i] = selection.getRangeAt(i);
         }
         window.getSelection().removeAllRanges();
         window.getSelection().addRange(rng);
         div.focus();
         this.callback = callback;
       } else return alert('Fail to paste. :(');
     };
   }
 

Kullan─▒m─▒:

 enyby_clip = new EnybyClipboard(); //init 

enyby_clip.copyText('some_text'); // place this in CTRL+C handler and return true;

enyby_clip.pasteText(function callback(pasted_text) {
        alert(pasted_text);
}); // place this in CTRL+V handler and return true;
 

Yap─▒┼čt─▒rmada textarea olu┼čturur ve ayn─▒ ┼čekilde ├žal─▒┼č─▒r.

PS bu ├ž├Âz├╝m olabilir fla┼čs─▒z tam taray─▒c─▒lar aras─▒ ├ž├Âz├╝m olu┼čturmak i├žin kullan─▒labilir. FF ve Chrome'da ├žal─▒┼č─▒r.


21







Son zamanlardan beri Chrome 42+ ve Firefox 41+ ┼čimdi document.execCommand ('copy') komutunu destekleyin. Bu y├╝zden, Tim DownÔÇÖn─▒n eski yan─▒t─▒ ile Google Geli┼čtiricinin yan─▒t─▒n─▒ bir arada kullanarak taray─▒c─▒dan kopya kopyalama ve panoya yazma becerisi i├žin birka├ž i┼člev yaratt─▒m :

 function selectElementContents(el) {
    // Copy textarea, pre, div, etc.
    if (document.body.createTextRange) {
        // IE 
        var textRange = document.body.createTextRange();
        textRange.moveToElementText(el);
        textRange.select();
        textRange.execCommand("Copy");
    } else if (window.getSelection && document.createRange) {
        // non-IE
        var range = document.createRange();
        range.selectNodeContents(el);
        var sel = window.getSelection();
        sel.removeAllRanges();
        sel.addRange(range);
        try {
            var successful = document.execCommand('copy');
            var msg = successful ? 'successful' : 'unsuccessful';
            console.log('Copy command was ' + msg);
        } catch (err) {
            console.log('Oops, unable to copy');
        }
    }
} // end function selectElementContents(el) 

function make_copy_button(el) {
    var copy_btn = document.createElement('input');
    copy_btn.type = "button";
    el.parentNode.insertBefore(copy_btn, el.nextSibling);
    copy_btn.onclick = function() {
        selectElementContents(el);
    };

    if (document.queryCommandSupported("copy") || parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2]) >= 42) {
        // Copy works with IE 4+, Chrome 42+, Firefox 41+, Opera 29+
        copy_btn.value = "Copy to Clipboard";
    } else {
        // Select only for Safari and older Chrome, Firefox and Opera
        copy_btn.value = "Select All (then press CTRL+C to Copy)";
    }
}
/* Note: document.queryCommandSupported("copy") should return "true" on browsers that support copy
	but there was a bug in Chrome versions 42 to 47 that makes it return "false".  So in those
	versions of Chrome feature detection does not work!
	See https://code.google.com/p/chromium/issues/detail?id=476508
*/

make_copy_button(document.getElementById("markup")); 
 <pre id="markup">
  Text that can be copied or selected with cross browser support.
</pre> 


21







Geesh, neden hen├╝z kimsenin i┼čaret etmedi─činden emin de─čilim.

2018ÔÇÖde millet, i┼čte nas─▒l gidebilece─činiz:

 async copySomething(text?) {
  try {
    const toCopy = text || location.href;
    await navigator.clipboard.writeText(toCopy);
    console.log('Text or Page URL copied');
  } catch (err) {
    console.error('Failed to copy: ', err);
  }
}
 

A├ž─▒sal 6+ kodumda ┼č├Âyle kullan─▒l─▒r:

 <button mat-menu-item (click)="copySomething()">
    <span>Copy link</span>
</button>
 

Bir dizgeden ge├žersem, kopyalar. Hi├žbir ┼čey olmazsa, sayfan─▒n URLÔÇÖsini kopyalar.

Panoya daha fazla jimnastik de yap─▒labilir. Daha fazla bilgi burada g├Ârmek:

https://developers.google.com/web/updates/2018/03/clipboardapi


21







Di─čer y├Ântemler, d├╝z metni panoya kopyalar. HTML'yi kopyalamak i├žin (├Ârne─čin, sonu├žlar─▒ bir WSIWYG edit├Âr├╝ne yap─▒┼čt─▒rabilirsiniz), a┼ča─č─▒dakileri SADECE IE'de yapabilirsiniz . Taray─▒c─▒ asl─▒nda i├žeri─či g├Ârsel olarak se├žti─či i├žin bu temel olarak di─čer y├Ântemlerden farkl─▒d─▒r.

 // create an editable DIV and append the HTML content you want copied
var editableDiv = document.createElement("div");
with (editableDiv) {
    contentEditable = true;
}     
editableDiv.appendChild(someContentElement);          

// select the editable content and copy it to the clipboard
var r = document.body.createTextRange();
r.moveToElementText(editableDiv);
r.select();  
r.execCommand("Copy");

// deselect, so the browser doesn't leave the element visibly selected
r.moveToElementText(someHiddenDiv);
r.select();   
 

20







Bunu ├žok ba┼čar─▒l─▒ bir ┼čekilde kullan─▒yorum ( jquery veya ba┼čka bir ├žer├ževe olmadan ).

 function copyToClp(txt){
    txt = document.createTextNode(txt);
    var m = document;
    var w = window;
    var b = m.body;
    b.appendChild(txt);
    if (b.createTextRange) {
        var d = b.createTextRange();
        d.moveToElementText(txt);
        d.select();
        m.execCommand('copy');
    } else {
        var d = m.createRange();
        var g = w.getSelection;
        d.selectNodeContents(txt);
        g().removeAllRanges();
        g().addRange(d);
        m.execCommand('copy');
        g().removeAllRanges();
    }
    txt.remove();
} 
 

Uyar─▒

Sekmeler bo┼čluklara d├Ân├╝┼čt├╝r├╝l├╝r (en az─▒ndan krom olarak).


19







En iyisi oldu─čunu d├╝┼č├╝nd├╝─č├╝m ┼čeyi bir araya getirdim.

  • Do─črudan stilin tersine IE'de istisnalar─▒ ├Ânlemek i├žin cssText'i kullan─▒r.
  • Varsa se├žimi geri y├╝kler
  • Salt okunur ┼čekilde ayarlar, b├Âylece klavye mobil cihazlarda g├Âr├╝nmez
  • ─░OS i├žin bir ge├žici ├ž├Âz├╝m vard─▒r, b├Âylece normal olarak execCommand komutunu engelledi─či gibi ├žal─▒┼č─▒r.

─░┼čte burada:

 const copyToClipboard = (function initClipboardText() {
  const textarea = document.createElement('textarea');

  // Move it off screen.
  textarea.style.cssText = 'position: absolute; left: -99999em';

  // Set to readonly to prevent mobile devices opening a keyboard when
  // text is .select()'ed.
  textarea.setAttribute('readonly', true);

  document.body.appendChild(textarea);

  return function setClipboardText(text) {
    textarea.value = text;

    // Check if there is any content selected previously.
    const selected = document.getSelection().rangeCount > 0 ?
      document.getSelection().getRangeAt(0) : false;

    // iOS Safari blocks programmtic execCommand copying normally, without this hack.
    // https://stackoverflow.com/questions/34045777/copy-to-clipboard-using-javascript-in-ios
    if (navigator.userAgent.match(/ipad|ipod|iphone/i)) {
      const editable = textarea.contentEditable;
      textarea.contentEditable = true;
      const range = document.createRange();
      range.selectNodeContents(textarea);
      const sel = window.getSelection();
      sel.removeAllRanges();
      sel.addRange(range);
      textarea.setSelectionRange(0, 999999);
      textarea.contentEditable = editable;
    } else {
      textarea.select();
    }

    try {
      const result = document.execCommand('copy');

      // Restore previous selection.
      if (selected) {
        document.getSelection().removeAllRanges();
        document.getSelection().addRange(selected);
      }

      return result;
    } catch (err) {
      console.error(err);
      return false;
    }
  };
})();
 

Kullan─▒m─▒: copyToClipboard('some text')


18







Flash 10'dan itibaren, yaln─▒zca eylem bir Flash nesnesiyle kullan─▒c─▒ etkile┼čiminden kaynaklan─▒yorsa, panoya kopyalayabilirsiniz. ( Adobe'nin Flash 10 duyurusundan ilgili b├Âl├╝m├╝ okuyun )

├ç├Âz├╝m, Kopyala d├╝─čmesinin ├╝zerinde bir fla┼č nesnesinin a┼č─▒r─▒ olmas─▒ ya da hangi ├Â─če kopyay─▒ ba┼člat─▒rsa onu almakt─▒r. Zero Clipboard ┼ču anda bu uygulama ile en iyi k├╝t├╝phanedir. Deneyimli Flash geli┼čtiricileri sadece kendi k├╝t├╝phanelerini olu┼čturmak isteyebilirler.


12







   <!DOCTYPE html>

  <style>
    #t {
      width: 1px
      height: 1px
      border: none
    }
    #t:focus {
      outline: none
    }
  </style>

  <script>
    function copy(text) {
      var t = document.getElementById('t')
      t.innerHTML = text
      t.select()
      try {
        var successful = document.execCommand('copy')
        var msg = successful ? 'successfully' : 'unsuccessfully'
        console.log('text coppied ' + msg)
      } catch (err) {
        console.log('Unable to copy text')
      }
      t.innerHTML = ''
    }
  </script>

  <textarea id=t></textarea>

  <button onclick="copy('hello world')">
    Click me
  </button> 


12







A┼ča─č─▒daki ├ž├Âz├╝m├╝ buldum:

Metin gizli bir giri┼čte var. ├ç├╝nk├╝ setSelectionRange gizli girdiler ├╝zerinde ├žal─▒┼čmaya de─čil, ben ge├žici olarak metne t├╝r├╝n├╝ de─či┼čtirdi metin kopyalay─▒p sonra yeniden gizli hale getirin. Metni bir ├Â─čeden kopyalamak istiyorsan─▒z, i┼čleve iletebilir ve i├žeri─čini hedef de─či┼čkene kaydedebilirsiniz.

     jQuery('#copy').on('click', function () {
        copyToClipboard();
    });

    function copyToClipboard() {
        var target = jQuery('#hidden_text');

        // make it visible, so can be focused
        target.attr('type', 'text');
        target.focus();
        // select all the text
        target[0].setSelectionRange(0, target.val().length);

        // copy the selection
        var succeed;
        try {
            succeed = document.execCommand("copy");
        } catch (e) {
            succeed = false;
        }

        // hide input again
        target.attr('type', 'hidden');

        return succeed;
    }
 

11







Metinleri HTML giri┼činden Pano'ya kopyala

  
 function myFunction() {
  /* Get the text field */
   var copyText = document.getElementById("myInput");
 
   /* Select the text field */
   copyText.select();

   /* Copy the text inside the text field */
   document.execCommand("Copy");
 
   /* Alert the copied text */
   alert("Copied the text: " + copyText.value);
 }
  
  
 <!-- The text field -->
 <input type="text" value="Hello Friend" id="myInput">
 
 <!-- The button used to copy the text -->
<button onclick="myFunction()">Copy text</button>
  

Not: y├Ântem IE9 desteklenen ve ├Ânceki edilmez. document.execCommand()

Kaynak : W3Schools - Metni Panoya Kopyala


10







IE d─▒┼č─▒ndaki taray─▒c─▒larda, panoyu de─či┼čtirmek i├žin k├╝├ž├╝k bir fla┼č nesnesi kullanman─▒z gerekir, ├Ârn.


8


2008-12-30





Zaten bir├žok cevap ama bir tane eklemeyi seviyorum (jQuery). Herhangi bir taray─▒c─▒da bir cazibe gibi ├žal─▒┼č─▒r, ayn─▒ zamanda mobil olanlar (yani g├╝venlik hakk─▒nda ister ancak kabul etti─činizde sadece iyi ├žal─▒┼č─▒r).

 function appCopyToClipBoard( sText )
{
 var oText = false,
     bResult = false;
 try
 {
  oText = document.createElement("textarea");
  $(oText).addClass('clipboardCopier').val(sText).insertAfter('body').focus();
  oText.select();
  document.execCommand("Copy");
  bResult = true;
 } catch(e) {}

 $(oText).remove();
 return bResult;
}
 

Kodunuzda:

 if( !appCopyToClipBoard( 'Hai there! This is copied to the clipboard.' ))
 { alert('Sorry, copy to clipboard failed.'); }
 

8







├ľzel bir ─▒zgara d├╝zenleme (Excel gibi bir ┼čey) olu┼čturma ve Excel ile uyumluluk ayn─▒ sorunu vard─▒. Birden fazla h├╝cre se├žmeyi, kopyalamay─▒ ve yap─▒┼čt─▒rmay─▒ desteklemem gerekiyordu.

├ç├Âz├╝m: kullan─▒c─▒n─▒n kopyalamas─▒ i├žin veri ekleyece─činiz bir metin olu┼čturun (kullan─▒c─▒ h├╝creleri se├žerken benim i├žin), oda─č─▒ ayarlay─▒n (├Ârne─čin, kullan─▒c─▒ d├╝─čmesine bast─▒─č─▒nda Ctrl) ve t├╝m metni se├žin.

B├Âylece, kullan─▒c─▒ Ctrl+ tu┼čuna bast─▒─č─▒nda, Ckopyalad─▒─č─▒ h├╝creleri se├žti. Yaln─▒zca textarea'y─▒ bir piksele yeniden boyutland─▒rmay─▒ test ettikten sonra (ekranda ├žal─▒┼č─▒p ├žal─▒┼čmad─▒─č─▒n─▒ test etmedim: yok). T├╝m taray─▒c─▒larda iyi ├žal─▒┼č─▒r ve kullan─▒c─▒ i├žin ┼čeffaft─▒r.

Yap─▒┼čt─▒rma - bununla ayn─▒ ┼čeyi yapabilirsiniz (hedefinize g├Âre de─či┼čir) - textarea'ya odaklan─▒n ve macunu kullanarak macun olaylar─▒n─▒ yakalay─▒n (projemde d├╝zenlemek i├žin h├╝crelerde textareas kullan─▒yorum).

Bir ├Ârnek yap─▒┼čt─▒ram─▒yorum (ticari proje), ancak fikri anlad─▒n─▒z.


8







Bu, di─čer cevaplar aras─▒ndaki bir kombinasyonun bir par├žas─▒d─▒r.

 var copyToClipboard = function(textToCopy){
    $("body")
        .append($('<textarea name="fname" class="textToCopyInput"/>' )
        .val(textToCopy))
        .find(".textToCopyInput")
        .select();
      try {
        var successful = document.execCommand('copy');
        var msg = successful ? 'successful' : 'unsuccessful';
        alert('Text copied to clipboard!');
      } catch (err) {
          window.prompt("To copy the text to clipboard: Ctrl+C, Enter", textToCopy);
      }
     $(".textToCopyInput").remove();
}
 

JQuery kullan─▒r, ancak elbette gerekmez. ─░sterseniz bunu de─či┼čtirebilirsiniz. Sadece emrime JQuery vard─▒. Giri┼čin g├Âr├╝nmedi─činden emin olmak i├žin baz─▒ CSS'ler de ekleyebilirsiniz. Mesela ┼č├Âyle bir ┼čey:

 .textToCopyInput{opacity: 0; position: absolute;}
 

Veya elbette baz─▒ sat─▒r i├ži stiller de yapabilirsiniz.

 .append($('<textarea name="fname" style="opacity: 0;  position: absolute;" class="textToCopyInput"/>' )
 

8







Bu, @ Chase'in cevab─▒n─▒n bir geni┼čletmesidir, yaln─▒zca IE9'daki DIV'lerde de─čil, IMAGE ve TABLE ├Â─čelerinde ├žal─▒┼čabilmesi avantaj─▒yla.

 if (document.createRange) {
    // IE9 and modern browsers
    var r = document.createRange();
    r.setStartBefore(to_copy);
    r.setEndAfter(to_copy);
    r.selectNode(to_copy);
    var sel = window.getSelection();
    sel.addRange(r);
    document.execCommand('Copy');  // does nothing on FF
} else {
    // IE 8 and earlier.  This stuff won't work on IE9.
    // (unless forced into a backward compatibility mode,
    // or selecting plain divs, not img or table). 
    var r = document.body.createTextRange();
    r.moveToElementText(to_copy);
    r.select()
    r.execCommand('Copy');
}
 

6







Clipboard.js kulland─▒m

npm'de alabiliriz

 npm install clipboard --save
 

ve ayr─▒ca bower

 bower install clipboard --save
 

Kullan─▒m ve ├Ârnekler https://zenorocha.github.io/clipboard.js/ adresindedir.


6







G├Âr├╝n├╝┼če g├Âre soruyu yanl─▒┼č anlad─▒m, ancak referans olarak, DOM'u (panoya de─čil; t├╝m modern taray─▒c─▒larla uyumlu) ├ž─▒karabilir ve pano davran─▒┼č─▒n─▒ elde etmek i├žin oncopy ve onpaste ve onbeforepaste olaylar─▒yla birle┼čtirebilirsiniz. ─░┼čte bunu ba┼čarman─▒n kodu:

 function clipBoard(sCommand) {
  var oRange=contentDocument.createRange();
  oRange.setStart(startNode, startOffset);
  oRange.setEnd(endNode, endOffset);
/* This is where the actual selection happens.
in the above, startNode and endNode are dom nodes defining the beginning 
and end of the "selection" respectively. startOffset and endOffset are 
constants that are defined as follows:

END_TO_END: 2
END_TO_START: 3
NODE_AFTER: 1
NODE_BEFORE: 0
NODE_BEFORE_AND_AFTER: 2
NODE_INSIDE: 3
START_TO_END: 1
START_TO_START: 0

and would be used like oRange.START_TO_END */
      switch(sCommand) {
    case "cut":
          this.oFragment=oRange.extractContents();
      oRange.collapse();
      break;
    case "copy":
      this.oFragment=oRange.cloneContents();
      break;
    case "paste":
      oRange.deleteContents();
      var cloneFragment=this.oFragment.cloneNode(true)
      oRange.insertNode(cloneFragment);
      oRange.collapse();
      break;
  }
}
 

5







Benim hatam. Bu sadece IEÔÇÖde ├žal─▒┼č─▒r.

─░┼čte metni kopyalaman─▒n ba┼čka bir yolu:

 <p>
    <a onclick="window.clipboardData.setData('text', document.getElementById('Test').innerText);">Copy</a>
</p>
 

5







─░nternette ├že┼čitli yollara bakt─▒ktan sonra ├žal─▒┼čt─▒─č─▒m tek ┼čey buydu. Bu da─č─▒n─▒k bir konudur. D├╝nyan─▒n d├Ârt bir yan─▒na yay─▒nlanan ve ├žo─ču ├ž├Âz├╝m├╝ i┼če yaramaz. Bu benim i├žin ├žal─▒┼čt─▒:

NOT: Bu kod yaln─▒zca 'onClick' y├Ântemi gibi bir ┼čeye do─črudan e┼čzamanl─▒ kod olarak y├╝r├╝t├╝ld├╝─č├╝nde ├žal─▒┼č─▒r. E─čer ajax'a veya herhangi bir ba┼čka asenkron y├Ântemle bir async yan─▒t─▒ ├ža─č─▒r─▒rsan─▒z, ├žal─▒┼čmaz.

 copyToClipboard(text) {
    var copyText = document.createElement("input");
    copyText.type = "text";
    document.body.appendChild(copyText);
    copyText.style = "display: inline; width: 1px;";
    copyText.value = text;
    copyText.focus();
    document.execCommand("SelectAll");
    document.execCommand("Copy");
    copyText.remove();
}
 

Bu kodun bir milisaniye boyunca ekranda g├Âzle g├Âr├╝l├╝r bir 1px geni┼čli─činde bir bile┼čen g├Âsterece─čini fark ettim, ancak endi┼čelenmemeye karar verdim, bu ba┼čkalar─▒n─▒n ger├žek bir probelm oldu─čunda ele alabilece─či bir ┼čey.


5


2017-10-14





Se├žili bir metni ('Kopyalanacak Metin') panonuza kopyalamak i├žin bir Yer imi (Javsacript'i ├žal─▒┼čt─▒ran taray─▒c─▒ yer imi) olu┼čturun ve ├žal─▒┼čt─▒r─▒n (├╝zerine t─▒klay─▒n). Ge├žici bir textarea olu┼čturacak.

Github'dan Kod:

https://gist.github.com/stefanmaric/2abf96c740191cda3bc7a8b0fc905a7d

 (function (text) {
  var node = document.createElement('textarea');
  var selection = document.getSelection();

  node.textContent = text;
  document.body.appendChild(node);

  selection.removeAllRanges();
  node.select();
  document.execCommand('copy');

  selection.removeAllRanges();
  document.body.removeChild(node);
})('Text To Copy');
 

5


2017-10-19