兼容 IE 和 Firefox 的复制内容至剪贴板

作者: 来源: 日期:2008-8-31
<script type="text/javascript">
<!--
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("复制成功!")
    }
}
-->
</script>

运行上述函数,在 Firefox 中会提示是否开启剪贴板。还有一种方法是利用 Flash 的复制作为跳板,请参见 http://www.storyday.com/html/y2007/931_copy2clip-firefox-solution.html

相关文章