Web 共享 API 级别 2 DOMException:权限被拒绝
Web Share API level 2 DOMException: Permission denied
我正在获取 img,将其转换为文件,然后尝试共享该文件。我在 Android 的最新 Chrome 上测试了代码(目前唯一支持此 API 的浏览器)。
if (shareimg && navigator.canShare) {
share = async function() {
const response = await fetch(shareimg);
const blob = await response.blob();
const file = await new File([blob], "image.jpeg");
navigator.share({
url: shareurl,
title: sharetitle,
text: sharetext,
files: [file]
});
};
}
我是 运行 响应用户单击按钮的函数(必须从用户手势调用 share() 方法,否则它将不起作用)。
(我正在使用 Browserstack 测试此代码,它为 javascript 错误提供了一个控制台,因为我无法成功 link 我的 Android 设备到我的 mac 用于调试,此 API 仅适用于手机 - 不适用于 Chrome 桌面。)
您的代码可以稍微优化一下。目前需要指定 blob 的 MIME 类型。您可以在此处实际查看以下代码:https://statuesque-backpack.glitch.me/.
if ('canShare' in navigator) {
const share = async function(shareimg, shareurl, sharetitle, sharetext) {
try {
const response = await fetch(shareimg);
const blob = await response.blob();
const file = new File([blob], 'rick.jpg', {type: blob.type});
await navigator.share({
url: shareurl,
title: sharetitle,
text: sharetext,
files: [file]
});
} catch (err) {
console.log(err.name, err.message);
}
};
document.querySelector('button').addEventListener('click', () => {
share(
'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Rick_Astley_Dallas.jpg/267px-Rick_Astley_Dallas.jpg',
'https://en.wikipedia.org/wiki/Rick_Astley',
'Rick Astley',
'Never gonna give you up!'
);
});
}
我正在获取 img,将其转换为文件,然后尝试共享该文件。我在 Android 的最新 Chrome 上测试了代码(目前唯一支持此 API 的浏览器)。
if (shareimg && navigator.canShare) {
share = async function() {
const response = await fetch(shareimg);
const blob = await response.blob();
const file = await new File([blob], "image.jpeg");
navigator.share({
url: shareurl,
title: sharetitle,
text: sharetext,
files: [file]
});
};
}
我是 运行 响应用户单击按钮的函数(必须从用户手势调用 share() 方法,否则它将不起作用)。
(我正在使用 Browserstack 测试此代码,它为 javascript 错误提供了一个控制台,因为我无法成功 link 我的 Android 设备到我的 mac 用于调试,此 API 仅适用于手机 - 不适用于 Chrome 桌面。)
您的代码可以稍微优化一下。目前需要指定 blob 的 MIME 类型。您可以在此处实际查看以下代码:https://statuesque-backpack.glitch.me/.
if ('canShare' in navigator) {
const share = async function(shareimg, shareurl, sharetitle, sharetext) {
try {
const response = await fetch(shareimg);
const blob = await response.blob();
const file = new File([blob], 'rick.jpg', {type: blob.type});
await navigator.share({
url: shareurl,
title: sharetitle,
text: sharetext,
files: [file]
});
} catch (err) {
console.log(err.name, err.message);
}
};
document.querySelector('button').addEventListener('click', () => {
share(
'https://upload.wikimedia.org/wikipedia/commons/thumb/4/41/Rick_Astley_Dallas.jpg/267px-Rick_Astley_Dallas.jpg',
'https://en.wikipedia.org/wiki/Rick_Astley',
'Rick Astley',
'Never gonna give you up!'
);
});
}