Firefox webextension 不复制到剪贴板

Firefox webextension not copying to clipboard

我有一个 Firefox 网络扩展,它应该生成将 link 复制到剪贴板的按钮。在我的插件内容脚本中,我有:

    button.onclick = function() {
        var link = window.location.href.replace(/#[0-9a-zA-Z_]+$/, '') + '#' + id;
        var txtToCopy = document.createElement('input');
        txtToCopy.value = link;
        txtToCopy.select();

        console.log(txtToCopy.value);
        var res = document.execCommand('copy');
        console.log(res);

    }

如您所见,我用它记录了我尝试复制的值,以及从 execCommand 返回的结果。两者都是我所期望的。

"https://thing.example.com#12345" true

但是,它似乎并没有真正将文本复制到剪贴板。根据 MDN,我不需要任何额外的权限,因为它是在事件中发生的,execCommand 的响应让我觉得一切都已按需设置。

我 运行 使用 Ubuntu 16.04,Firefox 51.0.1,启用了 e10s。也许e10s是我的问题,会提供更新。

您必须将 txtToCopy 附加到 DOM 才能从中复制,它必须是 "visible"(或多或少)。

button.onclick = function() {
    var link = window.location.href.replace(/#[0-9a-zA-Z_]+$/, '') + '#' + id;
    var txtToCopy = document.createElement('input');
    txtToCopy.style.left = '-300px';
    txtToCopy.style.position = 'absolute';
    txtToCopy.value = link;
    document.body.appendChild(txtToCopy);
    txtToCopy.select();

    console.log(txtToCopy.value);
    var res = document.execCommand('copy');
    console.log(res);

    txtToCopy.parentNode.removeChild(txtToCopy);

}