前言
幾年前,因為瀏覽器不具備直接訪問剪貼板的能力,開發(fā)者只能借助于Flash插件來提供這一基本功能。
乍一看開放剪貼板權(quán)限似乎沒什么危害,但試想如果瀏覽器能隨意查看和操作剪貼板內(nèi)容的話,頁面腳本(包括第三方腳本)豈不是就能輕松偷窺其中的信息然后將密碼,敏感信息,甚至整個頁面發(fā)送給遠端的服務(wù)器了。
現(xiàn)在,我們已經(jīng)可以整合基本的剪貼板功能,但還是有一些限制:
1.大部分瀏覽器支持剪貼板功能,Mac和iOS上的Safari除外。
2.不同瀏覽器的支持程度不盡相同,一些功能并不完整或存在缺陷。
3.用戶必須通過點擊鼠標或按鍵的方式來主動觸發(fā),腳本并不能隨時操縱剪貼板。
實現(xiàn)方式
一、document.execCommand() 方法
function copylink ( ) {
var copyDOM = document.getElementByld ( ' copy _ content ' + riderFlag);
var range = document.creatRange();
var selection = window.getSelection();
range.selectNode(copyDOM);
var successful = document.execCommand('copy');
try{
var msg = successful ? '成功' : ‘失敗’;
$("#share_box").hide();
showCopySuc();
} catch(err){
alert('復(fù)制鏈接失敗')
}
window.getSelection().removeAllRanges();
二、clipboard.js插件
clipboard.js 是一個不依賴 Flash,將文本復(fù)制到剪貼板的插件,僅僅 2kb。
參考代碼
function copylink() {
var clipboard = new Clipboard('.share_ticket' + riderFlag);
clipboard.on('success', function(e) {
console.info('Action:', e.action);
console.info('Text:', e.text);
console.info('Trigger:', e.trigger);
showCopySuc();
e.clearSelection();
});
clipboard.on('error', function(e) {
if(isNull(e.text)) {
alertSureDialog(e.text + '</br></br>請手動長按復(fù)制鏈接!');
}
console.error('Action:', e.action);
console.error('Trigger:', e.trigger);
});
}