使用JavaScript讀取所選文字並將其複製到剪貼簿(2)

cenfeng發表於2019-07-19

將所選文字複製到使用者剪貼簿

好了,既然如何閱讀頁面上所選內容的細節,無論是在一般的頁面上,還是在特定的DIV或表單元素內,我們都可以繼續下一個緊迫的問題,實際上是複製那個內容到剪貼簿。 正如在本教程開始時所提到的,它歸結為使用該方法 執行命令以將文字“複製”(或“剪下”)到剪貼簿:   document.execCommand()

1
2
3
4
6
7
8
9
function copySelectionText(){<font></font>
     var copysuccess // var to check whether execCommand successfully executed<font></font>
     try {<font></font>
         copysuccess = document.execCommand( "copy" ) // run command to copy selected text to clipboard<font></font>
     } catch (e){<font></font>
         copysuccess = false <font></font>
     }<font></font>
     return copysuccess<font></font>
}

這裡的關鍵是行 document.execCommand("copy") ,它實際上執行動作以將頁面上當前選擇的任何內容複製到剪貼簿。 為了檢測瀏覽器是否 execCommand()  正確 支援該 方法,我們將操作放在一個 try/catch() 塊中;  如果呼叫 execCommand() 失敗,我們知道瀏覽器不支援此方法。

我們可以使用我們的新變形 copySelectionText() 函式和任何以前的方法來選擇/檢索一些文字然後將其複製到剪貼簿。 例如,當使用者將滑鼠懸停在文件上時,下面的程式碼段會複製使用者在頁面上選擇的任何內容:

1
2
3
document.body.addEventListener( 'mouseup' , function (){<font></font>
     var copysuccess = copySelectionText() // copy user selected text to clipboard<font></font>
}, false )

我們可以改進這個過程,但如果使用者選擇實際上包含一些資料,則只執行“複製”操作;  例如,如果使用者只是單擊頁面而不突出顯示任何內容,則不會選擇任何資料,在這種情況下,應該中止複製操作。 這可以通過預先檢視使用者選擇的內容來完成:

1
2
3
4
6
document.body.addEventListener( 'mouseup' , function (){<font></font>
     var selected = getSelectionText() // call <a href="#getselectiontext">getSelectionText()</a> to see what was selected<font></font>
     if (selected.length > 0){ // if selected text length is greater than 0<font></font>
         var copysuccess = copySelectionText() // copy user selected text to clipboard<font></font>
     }<font></font>
}, false )

現在是現場演示的時候了。 嘗試選擇以下段落中的任何文字,以檢視其內容複製到剪貼簿(之後按“Ctrl V”進行貼上和確認)。 我還新增了一個臨時顯示的工具提示,表示每次成功:

演示(選擇下面段落中的任何文字將其複製到剪貼簿):

“為了享受健康,為家庭帶來真正的幸福,為所有人帶來和平,首先必須訓練和控制自己的思想。如果一個人可以控制自己的思想,他就能找到通往啟蒙的道路,以及所有的智慧和美德他自然會來找他。“  -佛

程式碼:

1
2
3
4
6
7
8
9
createtooltip() // create tooltip by calling it ONCE per page. See "Note" below<font></font>
var buddhaquote = document.getElementById( 'buddhaquote' )<font></font>
buddhaquote.addEventListener( 'mouseup' , function (e){<font></font>
     var selected = getSelectionText() // call getSelectionText() to see what was selected<font></font>
     if (selected.length > 0){ // if selected text length is greater than 0<font></font>
         var copysuccess = copySelectionText() // copy user selected text to clipboard<font></font>
         showtooltip(e)<font></font>
     }<font></font>
}, false )


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69933200/viewspace-2651149/,如需轉載,請註明出處,否則將追究法律責任。

相關文章