现在可以使用Web 共享 API!
但是,它尚未得到广泛支持。目前,它仅在 Safari(移动和桌面)和 Android 版 Chrome 中可用。有关详细信息,请参阅我可以使用。
根据Introducing the Web Share API on Google Developers,有几点需要牢记:
- 您的页面需要通过 HTTPS 提供
- 您只能调用
navigator.share(…)
以响应用户操作,例如单击(即,您不能在页面加载时调用它)
- 您应该对它进行功能检测,以防它在您的用户平台上不可用(例如,通过
navigator.share !== undefined
)
Google Developers 文章还指出,与 Share API 共享的 URL 不必位于您自己的域中——您可以共享任何 URL。
将所有这些放在一起,您可以使用类似这样的东西,如果它可用,则使用 Share API,如果它不是*则回退到发送电子邮件:
function createShareButton() {
const btn = document.createElement("button");
const title = document.title;
const text = "Check this out!";
const url = window.location.href;
btn.innerText = "share" in navigator ? "Share" : "Share via e-mail";
btn.onclick = () => {
if (navigator.share !== undefined) {
navigator
.share({
title,
text,
url
})
.then(() => console.log("Shared!"))
.catch(err => console.error(err));
} else {
window.location = `mailto:?subject=${title}&body=${text}%0A${url}`;
}
};
return btn;
}
document.title = "Demo";
document.body.appendChild(createShareButton());
*:请根据您的用例考虑使用更合适的后备方案(例如社交分享)。