复制到剪贴板不能在Firefox 25中工作

时间:2013-11-30 18:54:01

标签: javascript jquery clipboard

如何在Firefox V25中实现“剪贴板”功能。即使我已经将“about:config”中的“dom.event.clipboardevents.enabled”更改为true以及将“clipboard.autocopy”更改为true,那么它也无效。请帮我解决这个问题。

我使用这段代码进行剪贴板操作:

function copyToClipboardCrossbrowser(s) {           
s = document.getElementById(s).value;               

if( window.clipboardData && clipboardData.setData )
{
        clipboardData.setData("Text", s);
}           
else{
       // You have to sign the code to enable this or allow the action in about:config by changing
       //user_pref("signed.applets.codebase_principal_support", true);
       netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

       var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
       if (!clip) return;

       // create a transferable

       var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
       if (!trans) return;

       // specify the data we wish to handle. Plaintext in this case.
       trans.addDataFlavor('text/unicode');

       // To get the data from the transferable we need two new objects
       var str = new Object();
       var len = new Object();

       var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);

       str.data= s;        

       trans.setTransferData("text/unicode",str, str.data.length * 2);

       var clipid=Components.interfaces.nsIClipboard;              
       if (!clip) return false;
       clip.setData(trans,null,clipid.kGlobalClipboard);      
   }
}

1 个答案:

答案 0 :(得分:0)

netscape.security.PrivilegeManager.enablePrivilege( 'UniversalXPConnect')

因为安全性问题而无法在当前版本的Firefox中工作 - 我自己寻找解决方案!