js复制 | 兼容ie、google、opera、safari等

js复制 | 兼容ie、google、opera、safari等

开发中经常会用到js复制功能,在 IE 和firefox下实现比较简单。但要想做到跨浏览器比较困难了,现提供两种方法如下:


方法一:使用跨浏览器的库类 Zero Clipboard 。它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的document.execCommand(“Copy”) 更加灵活。


Zero Clipboard 的实现原理 :Zero Clipboard 利用 Flash 进行复制,之前有 Clipboard Copy 解决方案,其利用的是一个隐藏的 Flash。但最新的 Flash Player 10 只允许在 Flash 上进行操作才能启动剪贴板。所以 Zero Clipboard 对此进行了改进,用了一个透明的 Flash ,让其漂浮在按钮之上,这样其实点击的不是按钮而是 Flash ,也就可以使用 Flash 的复制功能了。


如何使用 Zero Clipboard
1、首先网上下载 zeroclipboard(网上找不到留个邮箱我发你) ,并解压缩。其中需要两个文件:ZeroClipboard.js 和 ZeroClipboard.swf ,将这两个文件放入到你的项目中。
2、在web环境中测试即可,例如 http://127.0.0.1/cp/test.html? (注意:测试过程中,因本地flash安全性问题是无法运行的。)


方法二:如果对跨浏览器无要求,只需要兼容 IE 和 firefox 浏览器,请使用如下方法:


1、将以下代码复制:


function copyToClipboard(txt) {
if(window.clipboardData) {
window.clipboardData.clearData();
clipboardData.setData(“Text”, txt);
alert(“复制成功!”);


} else if(navigator.userAgent.indexOf(“Opera”) != -1) {
window.location = txt;
} else if (window.netscape) {
try {
netscape.security.PrivilegeManager.enablePrivilege(“UniversalXPConnect”);
} catch (e) {
alert(“被浏览器拒绝!请在浏览器地址输入’about:config’并回车然后将 ‘signed.applets.codebase_principal_support’设置为’true’”);
}
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 false;
clip.setData(trans,null,clipid.kGlobalClipboard);
alert(“复制成功!”);
}
}


2、执行 copyToClipboard(‘要复制的内容’);

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部