"Copy" Safari 桌面网络共享中缺少选项 API?
"Copy" option missing from Safari Desktop Web Share API?
我正在尝试为某些文本实现 Web 共享 API,我希望允许用户 copy/share,除了 Safari 桌面出现问题外,它已经成功了。我检查 navigator.share
,如果它存在,那么我只打开本机共享屏幕,如果不存在,我只是将文本直接复制到剪贴板(就像在桌面上一样)。
Safari 桌面确实支持 Web 共享 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);
});
}
});
}
};
桌面版 Safari 的共享中确实没有“复制”功能sheet。好消息是 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);
}
}
我正在尝试为某些文本实现 Web 共享 API,我希望允许用户 copy/share,除了 Safari 桌面出现问题外,它已经成功了。我检查 navigator.share
,如果它存在,那么我只打开本机共享屏幕,如果不存在,我只是将文本直接复制到剪贴板(就像在桌面上一样)。
Safari 桌面确实支持 Web 共享 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);
});
}
});
}
};
桌面版 Safari 的共享中确实没有“复制”功能sheet。好消息是 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);
}
}