Safari 桌面 Web 共享 API 中缺少“复制”选项?
Posted
技术标签:
【中文标题】Safari 桌面 Web 共享 API 中缺少“复制”选项?【英文标题】:"Copy" option missing from Safari Desktop Web Share API? 【发布时间】:2020-08-18 09:47:13 【问题描述】:我正在尝试为一些我希望允许用户复制/共享的文本实现 Web 共享 API,并且它已经成功,除了 Safari 桌面的问题。我检查navigator.share
,如果存在,那么我只打开本机共享屏幕,如果不存在,我只需将文本直接复制到剪贴板(就像在桌面上一样)。
Safari 桌面确实支持 Web Share API,但它似乎没有提供一种方法来复制它?您可以在屏幕截图中看到它只是为我提供了一些选项。我错过了什么吗?有没有办法让“复制”作为选项?
const copyURL = copyText =>
if (navigator.share)
navigator
.share( text: copyText )
.then(() => )
.catch(console.error);
else
navigator.permissions.query( name: 'clipboard-write' ).then(result =>
if (result.state === 'granted' || result.state === 'prompt')
navigator.clipboard.writeText(copyText).then(() =>
setLinkCopied(true);
);
);
;
【问题讨论】:
【参考方案1】:桌面 Safari 的分享表中确实没有“复制”功能。好消息是 Safari 支持Async Clipboard API,因此您可以轻松地使用它作为替代,如下例所示:
async function copyPageUrl()
try
await navigator.clipboard.writeText(location.href);
console.log('Page URL copied to clipboard');
catch (err)
console.error('Failed to copy: ', err);
【讨论】:
以上是关于Safari 桌面 Web 共享 API 中缺少“复制”选项?的主要内容,如果未能解决你的问题,请参考以下文章
Web Share API 在 iOS 上不起作用:Angular