另请参见 译本。
版权 © 2023 万维网联盟. W3C® 责任声明, 商标 和 宽松文档许可证 规则适用。
本规范定义了一套用于将文本、链接及其他内容分享至用户自行选择的任意目标的 API。
可用的分享目标在此未作指定;它们由用户代理提供。例如,可能是应用、网站或联系人。
本节描述本文档在发布时的状态。当前的 W3C 出版物列表以及本技术报告的最新修订版可在 https://w3org.cn/TR/ 的 W3C 技术报告索引 中找到。
本文件由 Web Applications Working Group 作为推荐路径的 Recommendation(推荐)发布。
W3C 建议广泛部署本规范作为 Web 标准。
W3C Recommendation(推荐)是一份在广泛共识达成后,由 W3C 及其成员认可,并获得工作组成员对实现的免版税许可承诺的规范。对本 Recommendation 的未来更新可能会加入新功能。
本文件由遵循 W3C 专利政策 的小组制作。W3C 维护一份 公开的专利披露列表,列出与小组交付物相关的专利披露;该页面还包括披露专利的指南。任何实际了解其认为包含 必要权利要求 的专利的个人,必须依据 W3C 专利政策第 6 节进行披露。
本文档受 2021 年 11 月 2 日的 W3C 流程文档管辖。
本节是非规范性的。
内容分享的能力往往依赖底层操作系统提供“分享”功能以及操作系统的 UI 约定。例如,有的系统呈现“分享表单”,而有的依赖弹出菜单。由于上述依赖,实施者正持续努力让 Web Share API 在所有操作系统上可用。该工作在实现报告中表现为失败记录,因为报告只在有限的操作系统集合上运行测试。然而,工作组对 Web Share API 随着时间推移将在所有操作系统上更广泛可用持乐观态度,且它已在主流操作系统和多种设备上得到广泛支持。
本节是非规范性的。
由于 WebIDL 字典的工作方式,传递给 share() 的、用户代理不认识的成员会被忽略。当共享多个成员而用户代理不支持其中某个成员时,这可能会成为问题。若要确保传入的每个成员都被用户代理支持,可将它们单独传给 canShare() 检查是否受支持。
或者,您可以调整应用的 UI,使其不显示不受支持成员的 UI 组件。
const data = {
title: "Example Page",
url: "https://example.com",
text: "This is a text to share",
someFutureThing: "some future thing",
};
// Things that are not supported...
const unsupported = Object.entries(data).filter(([key, value]) => {
return !navigator.canShare({ [key]: value });
});
默认允许列表的默认允许列表是 'self',这使得 Web Share API 默认仅在第一方上下文中可用。
第三方可以通过 iframe 的 allow 属性来使用此 API。
或者,也可以在第一方上下文中通过指定 HTTP 响应头来禁用此 API。
有关详细信息以及如何对每个来源单独控制权限策略,请参阅 Permissions Policy 规范。
本规范定义了一个由字符串 "web-share" 标识的受策略控制的权限。其默认允许列表为'self',这意味着第三方上下文默认 不被允许使用 此 API。
用户代理 OPTIONAL 支持 Permissions Policy 的 Permissions-Policy HTTP 头部。
开发者可以使用 Permissions Policy 规范提供的手段,来控制第三方上下文何时以及是否 被允许使用 此 API。
本节是非规范性的。
当本规范用于在用户界面中呈现信息时,实现者应遵循平台的操作系统层面的可访问性指南。此外,正如在 share() 方法的安全性考虑部分所述,分享 UI 必须以可访问的方式呈现,同时兼顾平台对用户界面的安全指南。关键的考虑因素包括:
上述要点共同帮助视力、运动或认知障碍的用户更好地理解网页所分享内容的本质。
share() 中选择了哪个共享目标。这是为了防止泄露可用于指纹识别的信息,以及用户设备或用户偏好共享目标的细节。share() 可能会将私密数据泄露给不尊重用户隐私设置的第三方应用。用户代理可以在隐私模式下显示额外警告,或 MAY 完全禁用该功能,但并未强制要求,因为选择器 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;
};本节是非规范性的。
以下规范性更改在 Proposed Recommendation 阶段完成。完整的更改列表请参阅 提交日志。
以下规范性更改自从作为 First Public Working Draft 发布后,直至 Candidate Recommendation。完整的更改列表请参阅 提交日志。
编辑们想要感谢以下 W3C 组织对本规范提供的宝贵反馈,这极大地改进了本规范:Accessible Platform Architectures Working Group、Internationalization Working Group、Privacy Interest Group,以及 Technical Architecture Group。
感谢 Web Intents 团队,他们为 Web 应用的互操作性用例奠定了基础。特别是 Paul Kinlan,他为 Web Share 做了大量早期倡导工作。