1. 程式人生 > 實用技巧 >js觸發複製、貼上,設定和讀取剪下板的資料

js觸發複製、貼上,設定和讀取剪下板的資料

程式設計師的眾多稱號裡的一個叫“CV戰神”,但又有多少人知道cv的更多東西呢?

一起來看下cv下還隱含多少東西:

  1.複製一段文字到剪下板

  2.直接往剪下板寫一段內容

  3.從剪下板獲取內容

複製文字到剪下板:

 1     // 複製內容到剪下板
 2     copyFn(value){
 3         let transfer = document.createElement('input');
 4         document.body.appendChild(transfer);
 5         transfer.value = value;  // 這裡表示想要複製的內容
6 transfer.focus(); 7 transfer.select(); 8 if (document.execCommand('copy')) { 9 document.execCommand('copy'); 10 } 11 transfer.blur(); 12 // message.success('複製成功'); 13 document.body.removeChild(transfer); 14 }

通過這個方法會把value複製到剪下板的'text/plain'區域,你要是註冊了copy的監聽,會觸發你的監聽。

直接將要複製的內容放到剪下板

 1     // 複製內容到剪下板
 2     clipboardWrite(value){
 3         window.navigator.clipboard.writeText(value)
 4         .then(() => {
 5             console.log('Text copied to clipboard');
 6         })
 7         .catch(err => {
 8             // This can happen if the user denies clipboard permissions:
9 console.error('Could not copy text: ', err); 10 }); 11 }

通過這個方法會把value複製到剪下板的'text/plain'區域,你要是註冊了copy的監聽,會觸發你的監聽。

從剪下板獲取內容

 1     // 獲取剪下板的資料
 2     async pasteHandler(){
 3         const clipboardItems = await window.navigator.clipboard.read();
 4         let textHtml,textPlain;
 5         for (const clipboardItem of clipboardItems) {
 6             for (const type of clipboardItem.types) {
 7                 const item = await clipboardItem.getType(type);
 8                 if(item && item.type == 'text/html'){
 9                     textHtml = await item.text();
10                 }
11                 if(item && item.type == 'text/plain'){
12                     textPlain = await item.text();
13                 }
14             }
15         }
16         return {textHtml,textPlain}
17     }

方法中item會有四種類型,文字和html還有圖片還有什麼 ,忘卻了,有需要的自己列印看看。

當然navigator.clipboard.readText()直接可以讀取‘text/plain’的值,但如果你複製的是Excel的資料的話,通過這個方法獲取到的只是一些文字和箭頭。

研究了半天怎麼用js觸發ctrl+c和ctrl+v的事件,但也沒有效果,哪位大佬成功瞭望不吝賜教。

over!