Clipboard.js:不用Flash實現剪貼板功能的輕量級JavaScript庫
Zeno Rocha發布了一個專門用于從web頁面向本地計算機的剪貼板復制文本的JavaScript庫 :Clipboard.js 。
在每一個Github倉庫頁面的側邊欄上都有一個小部件,用來顯示repo的HTTPS克隆地址,當你點擊緊挨著這個部件的按鈕時,就會復制當前repo的URL到用戶的剪貼板中。Github用JavaScript庫 ZeroClipboard 來實現這一功能,問題是這個庫是用一個不可見的Flash來完成剪貼操作,而Flash技術正被各大瀏覽器廠商冷落,所以勢必要有一個新的方案。
在今年的早些時候,Firefox瀏覽器默認禁用了Flash,需要用戶明確啟用Flash才可以通過它向剪貼板中復制文本。
Mozilla Hacks 上的一篇文章中示范了API document.execCommand() 的使用方法。MDN的文檔中稱, execCommand
“賦予了瀏覽器通過運行指令操作可編輯區域內容的能力。”直到Firefox 41發布,“cut”和“copy”指令才正式啟用。
瀏覽器只允許用戶主動觸發這樣的事件,不允許JavaScript代碼隨意將文本復制到剪貼板中,如果代碼嘗試越過用戶自行復制,該調用會失敗。
Rocha借鑒了一些思路:通過給execCommand傳遞參數指令來執行相關操作;集成 Selection API 。通過結合這些技術,Clipboard.js為開發者提供了一個集成了實用的API的多功能輕量級JavaScript庫。如果想要將按鈕與庫綁定,開發者需要聲明觸發剪貼板的元素:
var clipboard = new Clipboard('.btn');
主流瀏覽器都支持這個庫,Safari目前仍不支持cut和copy指令。
ZeroClipboard的開發者在 討論 中聲稱也要在他們的庫中加入相同的API的支持,當這些API不被支持時提供向后兼容的Flash功能。ZeroClipboard的貢獻者James Green談起Clipboard.js時說到:“它是一個很好的輕量級選擇,但是我知道,很多用戶的使用環境不是最新的主流瀏覽 器,ZeroClipboard在向后兼容Flash的同時支持新的HTML5特性對這些用戶來說至關重要。”
HTML5的剪貼板API 的提案仍然處于議程中,在大多數瀏覽器只實現了 部分支持 。
查看英文原文: Lightweight JavaScript Library Offers Flash-Free Clipboard Integration