跨瀏覽器開(kāi)發(fā)經(jīng)驗(yàn)總結(jié)(四) 怎么寫(xiě)入剪貼板
更新時(shí)間:2010年05月13日 19:34:22 作者:
讓你的操作剪切板的操作支持多瀏覽器,一般IE,Firefox
IE、 Firefox可以支持JavaScript往剪貼板寫(xiě)入內(nèi)容
IE可以很方便的支持剪貼板內(nèi)容寫(xiě)入命令,可以使用execCommand(),也可以利用window.clipboardData。
使用execCommand,需要先從頁(yè)面選中要復(fù)制到剪貼板的內(nèi)容,如以下代碼:
var doc = obj.createTextRange();
doc.select();
doc.execCommand('copy');
使用window.clipboardData的方法如下,代碼中同時(shí)實(shí)現(xiàn)了Firefox下寫(xiě)入剪貼板的功能:
if(window.clipboardData) //IE
{
window.clipboardData.clearData();
window.clipboardData.setData("Text", txt);
}
else if (window.netscape)
{
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e)
{
alert("please visit 'about:config' and set signed.applets.codebase_principal_support as 'true'");
//提示用戶(hù)開(kāi)放瀏覽器的安全性設(shè)置
}
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
if (!clip)
return;
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if (!trans)
return;
trans.addDataFlavor('text/unicode');
var str = new Object();
var len = new Object();
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
var copytext = txt;
str.data = copytext;
trans.setTransferData("text/unicode",str,copytext.length*2);
var clipid = Components.interfaces.nsIClipboard;
if (!clip)
return;
clip.setData(trans,null,clipid.kGlobalClipboard);
}
以上代碼可以實(shí)現(xiàn)在IE、Firefox中往剪貼版寫(xiě)入自定義內(nèi)容,但是opera和webkit內(nèi)核瀏覽器對(duì)安全性要求更高,不支持這種javascript直接操作剪貼板內(nèi)容的方式,只能通過(guò)別的腳本語(yǔ)言“曲線救國(guó)”了。
Opera 、Safari、Chrome使用ActionScript往剪貼板寫(xiě)入內(nèi)容
具體的實(shí)現(xiàn)可以將原本的動(dòng)作按鈕用flex或flash實(shí)現(xiàn)其外觀,替換原來(lái)的圖片或文字按鈕,然后在點(diǎn)擊該按鈕時(shí),執(zhí)行以下ActionScript腳本:
//從瀏覽器環(huán)境中獲得需要寫(xiě)入到剪貼板的內(nèi)容
var s:String = String(ExternalInterface.call("getURL4Clipboard")); //getURL4Clipboard是頁(yè)面上return剪貼板內(nèi)容的javascript方法
//設(shè)置剪貼板內(nèi)容
System.setClipboard(s);
//調(diào)用完成設(shè)置剪貼板內(nèi)容后需要繼續(xù)的JavaScript函數(shù),比如提示用戶(hù)信息等
ExternalInterface.call("copyURLCompleted"); //copyURLCompleted是頁(yè)面上的javascript方法,繼續(xù)執(zhí)行復(fù)制后的工作
IE可以很方便的支持剪貼板內(nèi)容寫(xiě)入命令,可以使用execCommand(),也可以利用window.clipboardData。
使用execCommand,需要先從頁(yè)面選中要復(fù)制到剪貼板的內(nèi)容,如以下代碼:
復(fù)制代碼 代碼如下:
var doc = obj.createTextRange();
doc.select();
doc.execCommand('copy');
使用window.clipboardData的方法如下,代碼中同時(shí)實(shí)現(xiàn)了Firefox下寫(xiě)入剪貼板的功能:
復(fù)制代碼 代碼如下:
if(window.clipboardData) //IE
{
window.clipboardData.clearData();
window.clipboardData.setData("Text", txt);
}
else if (window.netscape)
{
try { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch (e)
{
alert("please visit 'about:config' and set signed.applets.codebase_principal_support as 'true'");
//提示用戶(hù)開(kāi)放瀏覽器的安全性設(shè)置
}
var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
if (!clip)
return;
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if (!trans)
return;
trans.addDataFlavor('text/unicode');
var str = new Object();
var len = new Object();
var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
var copytext = txt;
str.data = copytext;
trans.setTransferData("text/unicode",str,copytext.length*2);
var clipid = Components.interfaces.nsIClipboard;
if (!clip)
return;
clip.setData(trans,null,clipid.kGlobalClipboard);
}
以上代碼可以實(shí)現(xiàn)在IE、Firefox中往剪貼版寫(xiě)入自定義內(nèi)容,但是opera和webkit內(nèi)核瀏覽器對(duì)安全性要求更高,不支持這種javascript直接操作剪貼板內(nèi)容的方式,只能通過(guò)別的腳本語(yǔ)言“曲線救國(guó)”了。
Opera 、Safari、Chrome使用ActionScript往剪貼板寫(xiě)入內(nèi)容
具體的實(shí)現(xiàn)可以將原本的動(dòng)作按鈕用flex或flash實(shí)現(xiàn)其外觀,替換原來(lái)的圖片或文字按鈕,然后在點(diǎn)擊該按鈕時(shí),執(zhí)行以下ActionScript腳本:
//從瀏覽器環(huán)境中獲得需要寫(xiě)入到剪貼板的內(nèi)容
var s:String = String(ExternalInterface.call("getURL4Clipboard")); //getURL4Clipboard是頁(yè)面上return剪貼板內(nèi)容的javascript方法
//設(shè)置剪貼板內(nèi)容
System.setClipboard(s);
//調(diào)用完成設(shè)置剪貼板內(nèi)容后需要繼續(xù)的JavaScript函數(shù),比如提示用戶(hù)信息等
ExternalInterface.call("copyURLCompleted"); //copyURLCompleted是頁(yè)面上的javascript方法,繼續(xù)執(zhí)行復(fù)制后的工作
您可能感興趣的文章:
- javascript高級(jí)程序設(shè)計(jì)第二版第十二章事件要點(diǎn)總結(jié)(常用的跨瀏覽器檢測(cè)方法)
- 跨瀏覽器的事件對(duì)象介紹
- 基于jquery跨瀏覽器顯示的file上傳控件
- 跨瀏覽器通用、可重用的選項(xiàng)卡tab切換js代碼
- javascript 瀏覽器檢測(cè)代碼精簡(jiǎn)版
- javascript 特性檢測(cè)并非瀏覽器檢測(cè)
- JS判斷瀏覽器類(lèi)型與版本的實(shí)現(xiàn)代碼
- jQuery下通過(guò)$.browser來(lái)判斷瀏覽器.
- 判斷瀏覽器的javascript版本的代碼
- JS判斷瀏覽器之Navigator對(duì)象
- 判斷瀏覽器的js代碼
- (跨瀏覽器基礎(chǔ)事件/瀏覽器檢測(cè)/判斷瀏覽器)經(jīng)驗(yàn)代碼分享
相關(guān)文章
JS基于對(duì)象的特性實(shí)現(xiàn)去除數(shù)組中重復(fù)項(xiàng)功能詳解
這篇文章主要介紹了JS基于對(duì)象的特性實(shí)現(xiàn)去除數(shù)組中重復(fù)項(xiàng)功能,結(jié)合實(shí)例形式較為詳細(xì)的分析了js基于key值唯一性實(shí)現(xiàn)數(shù)組去重的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下2017-11-11淺談layui使用模板引擎動(dòng)態(tài)渲染元素要注意的問(wèn)題
今天小編就為大家分享一篇淺談layui使用模板引擎動(dòng)態(tài)渲染元素要注意的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09JS實(shí)現(xiàn)判斷移動(dòng)端PC端功能
這篇文章主要介紹了JS實(shí)現(xiàn)判斷移動(dòng)端PC端功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02Javascript動(dòng)態(tài)創(chuàng)建表格及刪除行列的方法
這篇文章主要介紹了Javascript動(dòng)態(tài)創(chuàng)建表格及刪除行列的方法,涉及javascript動(dòng)態(tài)操作表格的相關(guān)技巧,需要的朋友可以參考下2015-05-05VSCode Webview中實(shí)現(xiàn)點(diǎn)擊下載圖片的基本流程
這篇文章主要介紹了VSCode Webview中如何實(shí)現(xiàn)點(diǎn)擊下載圖片,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04