最近在做一個的智慧型客服Web端瀏覽器應用,其中有一項需求是客戶在獲取系統返回的
答案後點擊「複製答案」按鈕將答案複製到系統剪切板。本以為這是一個小case,但是發現如果
要對各種主流瀏覽器都有良好的兼容性並不簡單。原因在於出於安全原因,大多數現代瀏覽
器都未提供通用的剪貼簿複製介面(或即便有,也預設被停用)。
上網搜尋了一下,現有的方案大致有兩種:
一:使用原生javascript中window.clipboardData實作複製到剪貼簿功能;
二:使用Zero Clipboard函式庫;
在嘗試了之後發現現有的方案都無法滿足需求。
方案一僅支援ie瀏覽器,在firefox,chrome瀏覽器上則不行。
方案二則是現有絕大多數網站(包括github等)所採取的方案,ZeroClipboard是國外大神開發的一個
用於剪貼簿複製的JS 插件,它是基於Flash 來實現跨瀏覽器的複製功能的。當我們使用 ZeroClipboard
的時候,它會悄悄隱藏一個小小的 Flash 影片(swf),不會對我們的使用者介面造成影響。我們只需要藉助
它實作複製功能就行了。
ZeroClipboard 中的 "Zero" 指的是"不可見,零幹擾"。
對此感興趣的可以參考 http://my.oschina.net/shniu/blog/298406?p=1
# 但是在現代瀏覽器中,flash逐漸沒落,firefox瀏覽器預設不開啟flash,所以Zero Clipboard在
#相容方面也表現不佳。
那麼,對於複製到剪切板這種簡單的操作有沒有一種實現簡單,兼容性良好的解決方案呢?有的!那就是github
上的開源專案clipboard.js(官網:http://zenorocha.github.io/clipboard.js/) 官網對於clipboard.js的介紹
非常簡單:
A modern approach to copy text to clipboard No Flash. No dependencies. Just 3kb gzipped
Copying text to the clipboard shouldn Itt be hard.# Copying text to the clipboard shouldn Itt be hard.# Copying text to the clipboard shouldn Itt be .hard
or hundreds of KBs to load. But most of all, it shouldn't depend on Flash or any bloated framework.
#That's why clipboard.js exists.(拷貝文字到剪切板不應該複雜,它不應該需要許多步驟以及幾百KB的文件,另
外,它不應該依靠flash以及其他框架,這就是clipboard存在的原因)
下載路徑:
應用程式:
data-clipboard-target attribute 對應需要Copy的html. 可以攜帶頁面的樣式,如果儲存word。 txt 則無。
樣例如下:
<!-- Target --> <input id="foo" value="https://github.com/zenorocha/clipboard.js.git"> <!-- Trigger --> <button class="btn" data-clipboard-target="#foo"> <img src="assets/clippy.svg" alt="Copy to clipboard"> </button>
data-clipboard-action attribute 用於區別 copy or cut content。
<!-- Target --> <textarea id="bar">Mussum ipsum cacilds...</textarea> <!-- Trigger --> <button class="btn" data-clipboard-action="cut" data-clipboard-target="#bar"> Cut to clipboard </button>
you may expect, the cut action only works on or
data-clipboard-text attribute 用於純文字copy.
<!-- Trigger --> <button class="btn" data-clipboard-text="Just because you can doesn't mean you should — clipboard.js?1.1.11"> Copy to clipboard </button>
以上是clipboard.js用html頁面複製資訊到剪切板的詳細內容。更多資訊請關注PHP中文網其他相關文章!