基本兼容所有浏览器的复制到剪贴板的方法
2008 11 12 10:47 AM 4347次查看
分类:JavaScript 标签:JavaScript
查看了下代码,发现用到了flash来复制,真是太聪明了。当然,必须要安装了flash插件并启用flash才行。
测试结果是这些浏览器均可复制:IE、Chrome、Firefox、Opera和Safari。
这里有篇文章可以参考:http://www.cnblogs.com/vagerent/archive/2008/09/12/1289789.html
我就直接改discuz的代码了:
//text是要复制的内容,alertmsg是复制完成后要提示的内容
function setcopy(text, alertmsg){
if (window.clipboardData){
window.clipboardData.setData("Text", text)
alert(alertmsg);
}else{
var flashcopier = 'flashcopier';
if (!document.getElementById(flashcopier)){
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}
document.getElementById(flashcopier).innerHTML = '';
var divinfo = '<embed src="plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf" FlashVars="clipboard='+encodeURIComponent(text)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
document.getElementById(flashcopier).innerHTML = divinfo;
}
alert(alertmsg);
}
那个plugins/dp.SyntaxHighlighter/Scripts/clipboard.swf就是我放flash的地方,此外,这里用embed标签来嵌入flash,不符合标准。不过在我测试过的浏览器上都支持,所以我就不改了。
想要标准的话,可以用object标签或JavaScript来代替,不过会增加代码长度。
向下滚动可载入更多评论,或者点这里禁止自动加载。