js复制到剪贴板(兼容ie和火狐)
在web开发过程中常常要实现复制功能,比如复制源码、复制推广链接等,为了提高程序效率,一般都用js实现,具体源码如下:
<script language="javascript" type="text/javascript">
function CopyValue(obj){
var val = document.getElementById(obj).value;
if(CopyValue2Clipboard(val)!=false){
alert('已经复制!');
}
}
CopyValue2Clipboard = function(val){
if(window.clipboardData){
window.clipboardData.clearData();
window.clipboardData.setData("Text",val);
}
else if(navigator.userAgent.indexOf("Opera")! = -1){
window.location = val;
}
else if(window.netscape){
try{
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
catch(e){
alert("此操作被浏览器拒绝!请在浏览器地址栏输入“about:config”并回车,然后双击将[signed.applets.codebase_principal_support]的值设置为'true'即可。");
return false;
}
var cb = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
if(!cb)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 copyValue = val;
str.data = copyValue;
trans.setTransferData("text/unicode",str,copyValue.length*2);
var cbId = Components.interfaces.nsIClipboard;
if(!cb)return false;
cb.setData(trans,null,cbId.kGlobalClipboard);
}
}
</Script>
这句 var val = document.getElementById(obj).value; 是取待复制对象的值,也可以是 var val = document.getElementById(obj).innerText; ,不过ie6不支持,所以为了照顾ie6,只能用input标签,暂不用span、div等标签。