日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ZeroClipboard的时代或许已经过去了

發布時間:2024/1/17 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZeroClipboard的时代或许已经过去了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

曾經,一個網頁上要用Javascript實現網頁內容的復制,其實是很麻煩的一件事情。雖然在這個問題上IE有其高大上的window.clipboardData方法支持直接復制指定內容,Firefox也早早的支持了document.execCommand命令,但是因為早期的Chrome不支持瀏覽器直接操作剪貼板,或者說不支持document.execCommand命令,讓這一功能在兼容性上遇到了瓶頸。所以,聰明的開發者們開始走上“曲線救國”的道路:借助各大瀏覽器對Flash的支持,通過Javascript與Flash交互,將需要復制的內容傳遞到Flash中,再調用Flash操作剪切板的命令將內容復制到剪貼板,從而實現了兼容性極強的通過JS腳本復制網頁文本的插件。這也就是ZeroClipboard的使命。

The ZeroClipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie and a JavaScript interface.

ZeroClipboard曾盛極一時,而如今它的未來,恐怕令人擔憂。隨著HTML5的風靡,Flash在網頁應用中的地位受到了極大的沖擊,甚至有很多人都認為Flash正在慢慢淡出網頁開發者的世界,而事實也的確如此。不僅如此,自Chrome 43版本發布,增加document.execCommand命令支持,更讓ZeroClipboard的地位嚴重受到威脅。為什么這么說呢?下面我們一步一步來說明。

ZeroClipboard使用案例

通常情況下,ZeroClipord的應用場景大致是通過點擊一個按鈕復制一段指定的或用戶輸入的文本,HTML結構簡單的做如下描述:

<input type="text" name="" id="J_TextIn" value="Copy Test."> <input type="button" value="Copy" id="J_DoCopy"> <script src="dist/ZeroClipboard.min.js"></script>

下面配上ZeroClipboard的方法綁定就大功告成了!

(function(){var btn = document.getElementById('J_DoCopy'),text = document.getElementById('J_TextIn'),zc = new ZeroClipboard(btn);zc.on('beforecopy', function(e){zc.setText(text.value);}); })();

我們預覽頁面,在文本框中輸入任意字符,點擊Copy按鈕,文本框中輸入的內容就被復制到剪貼板中了。我們可以在任意可寫區域使用Ctrl+V或鼠標右鍵將內容進行粘貼。該案例可完美兼容各主流瀏覽器,包括IE6/7/8等骨灰級瀏覽器。

現在不使用ZeroClipboard我們也能實現

首先,我們保證頁面結構不變,但不在引入ZeroClipboard插件:

<input type="text" name="" id="J_TextIn" value="Copy Test."> <input type="button" value="Copy" id="J_DoCopy">

然后,我們使用document.execCommamd來對內容進行復制:

(function(){var btn = document.getElementById('J_DoCopy'),text = document.getElementById('J_TextIn');btn.onclick = function(){var transfer = document.getElementById('J_CopyTransfer');if (!transfer) {transfer = document.createElement('textarea');transfer.id = 'J_CopyTransfer';transfer.style.position = 'absolute';transfer.style.left = '-9999px';transfer.style.top = '-9999px';document.body.appendChild(transfer);}transfer.value = text.value;transfer.focus();transfer.select();document.execCommand('Copy', false, null);}; })();

接著,我們在瀏覽器中瀏覽,和使用ZeroClipboard時一樣的去操作,效果是一樣的。但是,這段代碼的正確執行是有限制的,因為document.execCommand在Chrome中支持的比較晚,所以要求Chrome版本必須是43及以后。

最后,再補充說明一下,使用document.execCommand來實現復制內容時,過渡被復制內容的textarea標簽(即:動態創建的那個textarea標簽),在復制可輸入區域(input:text,textarea)的內容時并不是必須的,可以直接簡化為:

(function(){var btn = document.getElementById('J_DoCopy'),text = document.getElementById('J_TextIn');btn.onclick = function(){text.focus();text.select();document.execCommand('Copy', false, null);text.blur();}; })();

考慮到實際使用中,我們可能需要復制一些非編輯區域提供的內容(比如:一個a標簽的鏈接地址等),所以增加了一個過渡的texearea,似乎更保險,更靈活一些。

此外,我再測試過程中,曾試圖將過渡的那個textarea設置為不可見的visibility:hidden;,卻發現復制功能失效了,所以這里需要注意一下...

作者博客:百碼山莊

轉載于:https://my.oschina.net/mailzwj/blog/517496

總結

以上是生活随笔為你收集整理的ZeroClipboard的时代或许已经过去了的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。