Javascript Copy剪贴板功能,适用于所有最新浏览器

时间:2012-12-10 05:14:03

标签: javascript jquery

我有以下cocpy剪贴板功能,它可以在最新的Internet Explorer和最新的Firefox上完美运行。

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);      
        }
}

你能否告诉我在上述功能中需要做些什么改变,以便在safari和opera上完美地运作。

我知道如果我们使用flash在这些浏览器上安装shockwave来获取复制数据,就有办法了。我只是不想寻求闪存解决方案。

感谢。

最诚挚的问候, 的Manoj

0 个答案:

没有答案