js複製內容到剪下板,相容pc和手機端,支援Safari瀏覽器

來源:互聯網
上載者:User

標籤:listen   event   使用者   cli   select   粘貼   default   dev   ast   

最近,一些項目中用到監聽使用者複製。剪下的操作。

Javascript原生有一些事件:copy、paste、cut,

這些事件可以作用的目標元素:

   能獲得焦點的元素 (如contentEditable內容能編輯或者可以選中的元素),或者是<body>

 1         <div id="cardList"> 2             <div class="btn">點擊我,複製我</div> 3         </div> 4          5          6          7         <script type="text/javascript"> 8              9             function copy(str){10                 var save = function (e){11                     e.clipboardData.setData(‘text/plain‘,str);//下面會說到clipboardData對象12                     e.preventDefault();//阻止預設行為13                 }14                 document.addEventListener(‘copy‘,save);15                 document.execCommand("copy");//使文檔處於可編輯狀態,否則無效16             }17                     18             document.getElementById(‘cardList‘).addEventListener(‘click‘,function(ev){19                  copy(ev.target.innerText)20             })21                 22         </script>

 

使用jQuery中的方法監聽使用者的剪下、複製、粘貼的行為:

1 $("#cut").on("cut",function(){2    alert("剪下");3 });4 $("#copy").on("copy",function(){5    alert("複製");6 });7 $("#paste").on("paste",function(){8    alert("粘貼");9 });

這些行為包括使用鍵盤的ctrl + c操作,或者右擊滑鼠—>複製等操作。

Evevt.clipboardData 對象

clipboardData是JavaScript剪下板對象,該對象提供了3個常用方法:

  clearData():  clipboardData對象從剪下板刪除一種或多種資料格式(一個參數:資料類型)

  getData():  clipboardData對象從剪下板擷取指定格式的資料(一個參數:資料類型)

  setData():  clipboardData對象賦予指定格式的資料(兩個參數:資料類型,要賦予的值)

  *資料類型一般為“"text/plain" ”

Evevt.clipboardData 對象相容性問題

  經過嘗試,clipboardData對象內相容大部分px瀏覽器,像chrome,firefox、ie等,但是在手機端相容性不是很好,

  目前clipboardData在ios上的safari瀏覽器無效,為解決移動端這個問題,我們引用一個js外掛程式——clipboard.js

  clipboard.js依賴於HTML5推出的Selection API和execCommand API

  使用:

  在頁面中引入

1 <script src="clipboard.min.js"></script>

  使用clipboard.js的自訂屬性

 1      <!--使用data-clipboard-target屬性指定被複製的標籤--> 2         <!--使用data-clipboard-action屬性指定一些操作,copy(複製),cut(剪下)--> 3         <!--注意:cut 操作僅適用於<textarea>和<input>--> 4         <div style="margin:2em"> 5             <textarea id="id_text"></textarea> 6             <button type="button" id="id_copy" 7                     data-clipboard-target="#id_text" 8                     data-clipboard-action="copy">點擊複製 9             </button>10         </div>

  

1    var clipboard = new Clipboard("#id_copy");2         clipboard.on("success",function (element) {//複製成功的回調3             console.info("複製成功,複製內容:    " + element.text);4         });5         clipboard.on("error",function (element) {//複製失敗的回調6             console.info(element);7         })8     });

  進階用法

1    //清理Clipboard對象2     var clipboard = new Clipboard(‘.btn‘);3     clipboard.destroy();

 

js複製內容到剪下板,相容pc和手機端,支援Safari瀏覽器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.