繁体   English   中英

Safari 剪贴板权限检查

[英]Safari clipboard permissions checking

我有以下适用于 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 中工作,但这并不是为生产编写的最安全的代码。 我错过了什么吗?

从那以后,我发现“ [t]当页面处于活动选项卡时,剪贴板写入权限会自动授予页面”。 这解释了为什么我的代码在没有权限检查的情况下工作,但没有回答我关于使用语法的问题

通过navigator.permissions.query function,剪贴板clipboard-readclipboard-write 对 Firefox 或 Safari 不可用

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

您会发现只有更新版本的 Safari 支持query ,因此请确保检查可用性: navigator.permissions && navigator.permissions.query({...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM