我正在开发一个 chrome 扩展 V3。我想将 JS 文件中的内容复制到剪贴板。
Manifest.json 如下,
"background" :{
"service_worker" :"eventPage.js"
},
"permissions" : [
"contextMenus",
"clipboardWrite"
]
Run Code Online (Sandbox Code Playgroud)
我尝试了 2 个复制功能的解决方案。
解决方案一:
const el = document.createElement('textarea');
el.value = str;
el.setAttribute('readonly', '');
el.style.position = 'absolute';
el.style.left = '-9999px';
document.body.appendChild(el);
el.select();
document.execCommand('copy');
document.body.removeChild(el);
Run Code Online (Sandbox Code Playgroud)
结果:
Error in event handler: ReferenceError: document is not defined at copyToClipboard
Run Code Online (Sandbox Code Playgroud)
解决方案2:
navigator.clipboard.writeText(str);
Run Code Online (Sandbox Code Playgroud)
结果:
Error in event handler: TypeError: Cannot read properties of undefined (reading 'writeText')
Run Code Online (Sandbox Code Playgroud)
Chrome 扩展作为 Service Worker 运行。所以看来我无法访问 DOM 文档并且没有授予 writeText 权限。还有人有其他建议吗?
谢谢。