无头模式下的Firefox扩展剪贴板无法工作



我开发了一个扩展,它添加了显示设备数据(如剪贴板内容等(的选项。我注意到

document.execCommand("paste");

使用selenium在无头模式下进行测试时不返回任何结果。我还写了一个测试页面来确认这一点:

function copyStringToClipboard(str) {                                                                                                                                                          
const el = document.createElement('textarea');                                                                                                                                             
el.value = str;                                                                                                                                                                            
el.setAttribute('readonly', '');                                                           
el.style = {position: 'absolute', left: '-9999px'};
document.body.appendChild(el);                                                             
el.select();                               
document.execCommand('copy');                                                              
document.body.removeChild(el);             
}                                                                                              

function getClipBoard() {                                                                      
const el = document.createElement("div");  
document.body.appendChild(el);                                                             
el.contentEditable = true;                 
el.style = {position: 'absolute', left: '-9999px'};

const range = document.createRange();   
range.selectNode(el);                 
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
el.focus();         
document.execCommand("paste");
return el.innerHTML;
}
copyStringToClipboard("test")
getClipBoard() // is empty

为什么会发生这种情况?

来自文档:

这两个API之间的区别在于document.execCommand类似于键盘复制、剪切和粘贴操作—交换网页和剪贴板之间的数据–而navigator.clipboard在剪贴板中写入和读取任意数据。

您确定问题出在paste而不是copy吗?

副本:navigator.clipboard.writeText("test");

如果你想从剪贴板中读取,请使用clipboard.readText((

相关内容

  • 没有找到相关文章

最新更新