支持firefox的“复制到剪贴板”2

据说在新版本的firefox中其实可以让用户设置是不是开放让javascript调用剪贴板,默认为不开放。

下面这段代码就是用firefox的合法途径调用剪贴板,并在用户没有设置剪贴板调用的时候告知如何设置。

function copyToClipboard(txt) {   
    if(window.clipboardData) {   
            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("复制成功!")   
    }   
}

字符串中不能使用\n而要用\x0D\x0A

5 Responses

  1. 我再来测试一下,可以删除

  2. 从FF1.0跟进到现在的2.0后,实在受不了时常的崩溃(特别是在同时打开Gmail页面的情况下)和庞大的内存占用。所以又转回到了IE7.0+IEpro了。
    p.s,我的站名为Think Again,非Thank again,能否改之。

    • 轶侠 says:

      已经改好了,真不好意思

    • Leo says:

      Firefox 3 的内存占用情况已经有了质的改善,建议试试:)