复制功能 in pc&mb

 在pc端我经常这样:

// JScript 文件
function copyToClip(type, copytext) {
    if (window.clipboardData) {
        if (window.clipboardData.setData("Text", copytext)) {
            alert("复制成功!")
            return;
        }
    }
    else if (window.netscape) {
        try {
            netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
            var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
            if (clip) {
                var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
                if (trans) {
                    trans.addDataFlavor('text/unicode');
                    var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
                    str.data = copytext;
                    trans.setTransferData("text/unicode", str, copytext.length * 2);
                    var clipid = Components.interfaces.nsIClipboard;
                    clip.setData(trans, null, clipid.kGlobalClipboard);
                    alert("复制成功!")
                    return;
                }
            }
        }
        catch (e) {
        }
    }
    prompt("您使用的浏览器不允许自动复制,请按下 Ctrl+C 进行复制", copytext);
}

不支持的情况就弹出input[type=text],使用.select()选中value,让用户自己复制。

移动端直接用的插件 clipboard-js ,介绍的最后边有说明兼容版本,在苹果5及以上亲测可用,华为自带uc浏览器(测试华为荣耀7,荣耀8,荣耀9)皆不可用,其他常用浏览器没问题。

2017.12.15  今天碰见一个新的问题,列表中每一行都有一个 复制 按钮 然后我尝试获取在页面中添加onclick事件传入this,确定是哪一个需要复制,结果是第一次点击无效。。。然后翻了clipboard的github,找到解决方案:https://github.com/zenorocha/clipboard.js/blob/master/demo/constructor-nodelist.html#L18-L19

原文地址:https://www.cnblogs.com/Merrys/p/7523022.html