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);
}
我有一个 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);
}