您的位置:首页 > Web前端 > JavaScript

js 复制代码 适用于firfox IE Mozilla Opera 保证成功

2009-04-15 14:03 411 查看
为了用js实现复制,搞了半天。在IE下很容易实现复制的功能,只要用以下代码就可以实现了。

function setTxt()
{
var t=document.getElementById("copyurl");
t.select();
window.clipboardData.setData("text",t.createTextRange().text);
}



但是在firfox下却实现不了。我试了很多网上的方法,都没成功,也尝试了开心网、阿里巴巴等的复制,他们的网站用的是js+flash的实现方式,具体实现如下:

<script type="text/javascript">
function getPre(o){
var ps=o.previousSibling;
if(ps.nodeType==3)
return ps.previousSibling;
return ps;
}
function copy(inElement) {
if (inElement.createTextRange) {
var range = inElement.createTextRange();
if (range) range.execCommand('Copy');
} else {
var flashcopier = 'flashcopier';
if(!document.getElementById(flashcopier)) {
var divholder = document.createElement('div');
divholder.id = flashcopier;
document.body.appendChild(divholder);
}
var divinfo = '<embed src="_clipboard.swf" FlashVars="clipboard='+encodeURIComponent(inElement.value)+'" width="0" height="0" type="application/x-shockwave-flash"></embed>';
document.getElementById(flashcopier).innerHTML = divinfo;
}
inElement.select();
alert("复制成功!");
}
</script>

<input class="web" name="copyurl" id="copyurl" type="text" size="70" value="复制链接" onclick="copy( getPre(this))"/><input class="copy" type="button" value="Copy" onclick="copy( getPre(this))"/>



其中上面的_clipboard.swf这个文件是一个flash文件。这个代码的缺陷是电脑上必须安装flash,若没有就复制不了。

后来在朋友的帮助下找到了以下代码。很不错,比较适合:

<script language="javascript">
function copyToClipboard() {
var txt = document.getElementById("copyurl").value ;
if(window.clipboardData) {
alert(1);
window.clipboardData.clearData();
window.clipboardData.setData("Text", txt);
} else if(navigator.userAgent.indexOf("Opera") != -1) {
window.location = txt;
} else if (window.netscape) {
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
} catch (e) {
alert("被浏览器拒绝!/n请在浏览器地址栏输入'about:config'并回车/n然后将'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("复制成功!")
}
}
</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: