我有以下代码,它可以在Chrome中工作:
navigator.permissions
.query({ name: "clipboard-write" })
.then((result) => {
if (result.state === "granted" || result.state === "prompt") {
navigator.clipboard.writeText(data.payload).then(console.log).catch(console.error);
}
})
.catch((err) => {
console.log("ToSystemClipboard", err);
});
但在Safari中,它会出现TypeError: Type error
的错误。
在Webstorm中,我得到了{ name: "clipboard-write" }
的下划线效果,表明clipboard-write
不是一个被识别的关键字。然而,在https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/read上,clipboard-read
在一个示例中被使用 - 我不记得我在哪里找到了clipboard-write
。
如果我删除权限测试,我的代码 - navigator.clipboard.writeText
- 在Safari中仍然可以工作,但这似乎不是为生产编写最安全的代码。我有什么遗漏吗?
我后来发现 "当页面是活动选项卡时,clipboard-write权限会自动授予页面"。这解释了为什么我的代码在没有权限检查的情况下工作,但并没有回答我关于要使用的语法的问题。