基本兼容所有浏览器的复制到剪贴板的方法

标签:JavaScript

今天去弄了个代码高亮的插件,发现我用Chrome浏览器居然也能复制到剪贴板。
查看了下代码,发现用到了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来代替,不过会增加代码长度。

2条评论 你不来一发么↓ 顺序排列 倒序排列

    向下滚动可载入更多评论,或者点这里禁止自动加载

    想说点什么呢?