【发布时间】:2023-01-31 15:29:03
【问题描述】:
我正在开发一个 chrome 扩展 V3。我想将内容复制到我的 JS 文件中的剪贴板。
如下所示的 manifest.json,
"background" :{
"service_worker" :"eventPage.js"
},
"permissions" : [
"contextMenus",
"clipboardWrite"
]
我已经尝试了 2 个复制功能解决方案。
解决方案 1:
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);
结果:
Error in event handler: ReferenceError: document is not defined at copyToClipboard
解决方案 2:
navigator.clipboard.writeText(str);
结果:
Error in event handler: TypeError: Cannot read properties of undefined (reading 'writeText')
chrome 扩展作为服务工作者运行。所以看起来我无法访问 DOM 文档并且没有 writeText 的授权。有人有其他建议吗?
谢谢。
【问题讨论】:
-
您必须打开一个可见页面,其中包含您的扩展程序的 html 文件,然后将文本复制到那里。
-
所以我不能在右键单击和上下文菜单中实现该功能,对吗?
-
您必须 a) 打开一个带有扩展程序 html 文件的可见页面,然后将文本复制到那里,或者 b) 将内容脚本声明/注入到活动选项卡(或任何带有网页的选项卡)中,然后将文本复制到那里.
标签: javascript google-chrome-extension copy-paste