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

   为了用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="复制链接"  οnclick="copy( getPre(this))"/><input class="copy" type="button" value="Copy" οnclick="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>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值