我编写了一个 Firefox 扩展来读取剪贴板,如果它有一些 PEM 证书,它将在新选项卡中打印其详细信息。我正在尝试移植到 Chrome。这是行不通的。我究竟做错了什么?
我在manifest.json中请求了clipboardRead,并在后台脚本中运行它,它在Firefox中运行良好。
navigator.clipboard.readText().then(function (textFromClipboard) {
//do stuff with textFromClipboard
});
这在 Chrome 中失败,并显示“无法在‘剪贴板’上执行‘readText’:非法调用”。我究竟做错了什么?我如何才能在 Chrome 中也实现此功能?大多数答案涉及创建输入、获取焦点、执行粘贴。这真的很复杂,我希望我不必这样做。它在 Firefox 中运行得很好,为什么在 Chrome 中却很复杂?
您可以使用@bumble/clipboard。它是一个用于模拟剪贴板 API 的 Chrome 扩展的 npm 库。
它不需要用户交互,并且在后台脚本中工作。它只需要clipboardRead
or clipboardWrite
权限。
import { clipboard } from '@bumble/clipboard'
// Read text from the clipboard, or "paste"
clipboard.readText()
.then((text) => {
console.log('clipboard contents', text)
})
// Write text to the clipboard, or "copy"
clipboard.writeText('write this to the clipboard')
.then((text) => {
console.log(text, 'was written to the clipboard')
})
披露:我为自己编写这个库是为了解决 @ddreian 提到的相同问题。它是一个基于 Promise 的非阻塞解决方案,使用document.execCommand
在引擎盖下。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)