我认为 Web Share API 非常酷(这里是我们对此的报道)。简而言之,它利用了您所处平台上的原生分享功能,前提是该平台支持它。
我喜欢这个

比这些东西多得多

为什么?
- Web Share API 只需要几行代码。很容易!没有图片,没有重量级的 JavaScript 或 iframe,也没有过时的风险(咳咳,Google+)。
- 用户看到的 UI 会根据其平台进行自定义,甚至可能由他们自己进行自定义,以包含他们想要的内容。
网页标准做得好。
但它并非在所有地方都受支持。例如,我正在 Chrome 中撰写这篇博文,它在桌面版 Chrome 中不起作用。但它在桌面版 Safari 中可以正常工作!

因此,如果我要使用它,我宁愿在将按钮放在页面上之前测试其支持情况。这很容易
if (navigator.share) {
}
这是一个示例,如果 API 受支持,我将在文章中放置一个 <button>
该 JavaScript 做了一些花哨的处理,以获取文章的标题和第一段,以便在 API 中使用。我喜欢 Jeremy Keith 在页面级别是如何做的
if (navigator.share) {
navigator.share(
{
title: document.querySelector('title').textContent,
text: document.querySelector('meta[name="description"]').getAttribute('content'),
url: document.querySelector('link[rel="canonical"]').getAttribute('href')
}
);
}
您也可以只将字符串传递给这些值。这只是展示了您如何在任何页面上动态执行操作。
Jeremy 一直在倡导 Web Share API 的 JavaScript 可选版本,他认为它可以这样工作
<button type="share">
然后,用于指定标题和文本
<button type="share" value="title,text">
我觉得这有点奇怪,有逗号。如果标题中包含逗号怎么办?那么指定 URL 呢?我们可以将它们全部拆分为属性吗?我想我知道 Jeremy 会怎么说:这是一个简单的声明式版本。如果您想更改默认行为,这就是 JavaScript 的作用。
但是,如果浏览器不支持它,它是否应该存在?当然,如果您对其进行 polyfill
如果不受支持,此 polyfill 会将按钮转换为 mailto:
体验。这很聪明。我认为如果我处于生产环境中,我可能只会在真正支持该功能时才插入按钮。
哇,哇,哇!使用 value 属性作为标题和文本只是我的随口一说。我很快放弃了这个想法——正如你所说,它有点奇怪。我写了一篇 解释 关于
button type="share"
的想法,并且 value 属性没有出现。标题和 URL 由浏览器收集(与它们收集书签的方式相同)。我在我的 Angular 项目中经常使用 Web Share API。我只有一个问题:桌面版 Chrome :(
Nikhil,你介意 在这里分享你的用例吗?
“甚至可能由他们自己进行自定义”
我希望……共享菜单一团糟
我发现很难从活动中传输视频。1.9GB
在桌面上检查按钮是否出现,可以在 chrome://flags/#enable-experimental-web-platform-features 中设置 Chrome 标志。
它只显示浏览器为移动设备时出现的按钮,但不会有任何操作。
我以不同的方式处理了不兼容性,更多信息请访问 -> ShareButton.js
似乎在 Firefox 移动版上不起作用,尽管最近的 Fenix 更新破坏了很多东西,所以这并不奇怪。
在 Firefox 中,共享按钮会出现,但点击时不会发生任何事情。
我关注您的网站已经很多年了,关注 WeShare API 也已经几个月了。这对移动 UX 来说是一个巨大的改进,并且希望在 Safari iOS 默认启用通过 WeShare API 进行文件共享时会变得更好,它在 Chrome 移动版中已启用。我们的世界围绕媒体展开,而 Apple 在最新的 Safari 14 更新中禁用了默认的文件共享。
一如既往,很棒的文章,Chris :)
我玩这个 API 已经有一段时间了,并且由于无法在桌面上使用它,我创建了这个 polyfill
https://npmjs.net.cn/package/share-api-polyfill
它最终非常小,并且在桌面和移动设备上都能流畅运行(在任何时候都使用原生 API)。
它还支持多种语言,并且由于社区的 PR 而不断发展 :)
在我看来,我们只是通过添加所有这些额外的“共享”按钮来使我们的 UI 变得杂乱。我理解有些用户不知道点击汉堡包图标并点击“共享”,但我希望看到我们远离所有这些共享按钮。至少这个 API 为我们带来了更统一的共享方法,朝着正确的方向发展。
请您能否举个例子,说明如何使用存储在文件夹中的图片作为网页共享的图片和文本?