另见 翻译.
Copyright © 2023 World Wide Web Consortium. W3C® liability, trademark and permissive document license rules apply.
本规范定义了一个用于将文本、链接和其他内容共享到用户选择的任意目标的 API。
这里没有指定可用的共享目标;它们由用户代理提供。例如,它们可能是应用程序、网站或联系人。
本节描述了本文档在发布时的状态。当前的 W3C 出版物列表和该技术报告的最新修订版可在 W3C 技术报告索引中找到,网址为 https://www.w3.org/TR/。
本文档由 Web 应用工作组 作为推荐标准发布,使用 推荐标准轨道。
W3C 推荐广泛部署此规范作为 Web 标准。
W3C 推荐标准是一种规范,经过广泛的共识建立后,得到了 W3C 及其成员的认可,并且工作组成员承诺 免版税许可 以便实施。未来对此推荐标准的更新可能会包含 新功能。
本文档由依据 W3C 专利政策运营的小组生成。 W3C 维护了一个 公开的专利披露列表 ,与该小组的可交付成果相关;该页面还包括 披露专利的说明。任何个人若已实际了解包含 必要声明的专利,必须根据 W3C 专利政策第 6 节披露信息。
本文档受 2021 年 11 月 2 日 W3C 过程文档的约束。
本节是非规范性的。
内容共享功能通常依赖于底层操作系统提供的“共享”功能以及操作系统的用户界面约定。例如,某些操作系统呈现“共享面板”,而其他操作系统依赖于弹出菜单。由于上述依赖性,实施者正在继续努力将 Web 共享 API 带到所有操作系统。这项正在进行的工作反映在 实施报告中的失败情况,该报告是通过在有限的一组操作系统上运行测试生成的。然而,工作组对 Web 共享 API 能够随着时间的推移在所有操作系统上变得更加普遍感到乐观,并且它已经广泛应用于各种设备上的流行操作系统中。
本节为非规范性内容。
由于 WebIDL 字典的工作方式,传递给
share
()
的未知成员会被用户代理忽略。
这可能会在共享多个成员时造成问题,但用户代理不支持其中的某个成员。为了确保传递的每个成员都受用户代理支持,
可以将它们单独传递给 canShare
()
方法,以检查它们是否受支持。
或者,您可以调整应用程序的 UI 以隐藏不支持的成员组件。
const data = {
title: "示例页面",
url: "https://example.com",
text: "这是共享的文本",
someFutureThing: "某个未来的东西",
};
// 不支持的成员...
const unsupported = Object.entries(data).filter(([key, value]) => {
return !navigator.canShare({ [key]: value });
});
默认允许列表中的 'self' 使 Web Share API 默认仅在第一方上下文中可用。
第三方可以通过
iframe
的
allow
属性启用该 API:
或者,可以通过指定 HTTP 响应头在第一方上下文中禁用该 API:
参见 权限策略 规范,了解更多详细信息以及如何根据每个来源控制权限策略。
本规范定义了一个由字符串
"web-share"
标识的受策略控制的权限。
其
默认允许列表
是 'self',这意味着第三方上下文默认不
被允许使用
该 API。
用户代理是否支持 权限策略 中的
Permissions-Policy
HTTP 标头是 可选 的。
开发者可以使用 权限策略 规范提供的手段来控制第三方上下文是否和何时 被允许使用 此 API。
本节为非规范性内容。
当本规范用于在用户界面中展示信息时,开发人员应遵循平台的操作系统级别无障碍指南。此外,鉴于共享可能对终端用户产生潜在的安全影响(如
share
()
方法中所述),共享 UI
需要以无障碍的方式呈现,同时也要考虑平台的用户界面安全指南。一些关键的考虑因素包括:
这些元素的结合可以帮助具有视觉、运动或认知障碍的用户更好地理解网页所共享内容的性质。
除了标记为非规范性的部分外,本规范中的所有编写指南、图表、示例和注释均为非规范性内容。除此之外,本规范中的所有内容均为规范性内容。
本文件中的关键词 MAY、MUST、OPTIONAL 和 SHOULD 应按照 BCP 14 [RFC2119] [RFC8174] 进行解释,仅在这些关键词以大写形式出现时按照上述方式解释。
WebIDLpartial interface Navigator {
[SecureContext] Promise<undefined> share
(optional ShareData
data = {});
[SecureContext] boolean canShare
(optional ShareData
data = {});
};
dictionary ShareData
{
sequence<File> files
;
USVString title
;
USVString text
;
USVString url
;
};
本节为非规范性内容。
以下规范性变更是在拟推荐标准阶段进行的。有关更改的完整列表,请参阅提交日志。
自从规范发布为首次公开工作草案到候选推荐标准后,进行了以下规范性变更。有关更改的完整列表,请参阅提交日志。
编辑们要感谢以下 W3C 小组提供的宝贵反馈,这极大地改进了本规范: 无障碍平台架构工作组、国际化工作组、隐私兴趣组 和 技术架构组。
感谢 Web 意图 团队为 Web 应用互操作性用例打下了基础。特别感谢 Paul Kinlan 的早期倡导,他为 Web Share 贡献了许多早期的推广工作。