Safari剪贴板权限检查

3
我有以下代码,它可以在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权限会自动授予页面"。这解释了为什么我的代码在没有权限检查的情况下工作,但并没有回答我关于要使用的语法的问题。

1个回答

1

clipboard-readclipboard-writenavigator.permissions.query 函数中 不能在Firefox或Safari中使用

但是,您可以通过 navigator.clipboard 访问Safari的剪贴板。

请注意,只有最新版本的Safari支持 query 函数,因此请确保检查其可用性:navigator.permissions && navigator.permissions.query({ ...


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接