JavaScript-有没有可以兼容Mac上chrome浏览器的“复制到剪贴板”的解决方案?

服务器管理 服务器管理 主题:1035 回复:2217

JavaScript-有没有可以兼容Mac上chrome浏览器的“复制到剪贴板”的解决方案?

瑾兮 发布于 2017-08-02 字数 112 浏览 1025 回复 1

希望可以兼容mac上的chrome浏览器,也就是说可能chrome浏览器不能支持flash。所以使用flash的方案就可能不行了。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(1

归属感 2017-10-18 1 楼

以前有,现在各浏览器开发商为了安全,不允许访问这一块了。
有个js文件 copyToClipboard.js

function CopyText(id) {
    copy(document.getElementById(id).value);
}

function copy(text2copy) {
    if (window.clipboardData) {
        window.clipboardData.setData("Text", text2copy);
    } else {
        var flashcopier = 'flashcopier';
        if (!document.getElementById(flashcopier)) {
            var divholder = document.createElement('div');
            divholder.id = flashcopier;
            document.body.appendChild(divholder);
        }
        document.getElementById(flashcopier).innerHTML = '';
        var divinfo = '<embed src="_clipboard.swf" FlashVars="clipboard=' + escape(text2copy) + '" width="0" height="0" type="application/x-shockwave-flash"></embed>'; 
        document.getElementById(flashcopier).innerHTML = divinfo;
        alert('复制成功!');
    }
}

function copyToClipboard(meintext) {
    if (window.clipboardData) {
        window.clipboardData.setData("Text", meintext);
    }
    else if (navigator.userAgent.indexOf("Opera") != -1) {
        window.location = meintext;
    }
    else if (window.netscape) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
        } catch (e) {
            alert("浏览器拒绝访问!");
        }

        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 = meintext;
        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("复制成功!");
    return false;

}

这个能友好的提示,不一定100%能用,还有办法就是使用falsh,据听说falsh高版本的也不能访问这一块了!