Clipboard.js:不用Flash實現剪貼板功能的輕量級JavaScript庫

jopen 9年前發布 | 7K 次閱讀 Clipboard.js
 

Zeno Rocha發布了一個專門用于從web頁面向本地計算機的剪貼板復制文本的JavaScript庫 :Clipboard.js

在每一個Github倉庫頁面的側邊欄上都有一個小部件,用來顯示repo的HTTPS克隆地址,當你點擊緊挨著這個部件的按鈕時,就會復制當前repo的URL到用戶的剪貼板中。Github用JavaScript庫 ZeroClipboard 來實現這一功能,問題是這個庫是用一個不可見的Flash來完成剪貼操作,而Flash技術正被各大瀏覽器廠商冷落,所以勢必要有一個新的方案。

Clipboard.js:不用Flash實現剪貼板功能的輕量級JavaScript庫

在今年的早些時候,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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!