manifest: scope_extensions 支持情况
发布于 更新于
manifest: scope_extensions —— 一个 Web App Manifest 成员,让已安装的 PWA 的
导航范围扩展到其他源,每个源都需要通过托管在该源上的
.well-known/web-app-origin-association 文件主动接入。根据该 explainer 的说明,
由于托管关联文件即可将一个源加入另一个应用的范围,因此建议该应用与被关联的源
归属同一实体。
浏览器与生态支持
Section titled “浏览器与生态支持”- 图例
- 支持
- 部分支持
- 需开启标志
- 不支持
- 未知
| 浏览器 / 平台 | 支持 | 版本 | 置信度 | 来源 | 备注 |
|---|---|---|---|---|---|
| Chrome (Desktop) | 支持 | 138 | 高 | 来源 | — |
| Chrome (Android) | 支持 | 138 | 高 | 来源 | 1 |
| Edge (Desktop) | 支持 | 138 | 高 | 来源 | 2 |
| Firefox (Desktop) | 不支持 | — | 高 | 来源 | 3 |
| Firefox (Android) | 不支持 | — | 高 | 来源 | 45 |
| Safari (macOS) | 不支持 | — | 高 | 来源 | 6 |
| Safari (iOS) | 不支持 | — | 高 | 来源 | 78 |
| Samsung Internet | 支持 | 30.0 | 高 | 来源 | 9 |
| WebView (Android) | 支持 | 138 | 高 | 来源 | 10 |
- 由 browser-compat-data 镜像自 Chrome 的数据推导。
- 由 browser-compat-data 镜像自 Chrome 的数据推导。
- browser-compat-data 未记录 Firefox 的支持。
- browser-compat-data 未记录 Firefox for Android 的支持。
- 由 browser-compat-data 镜像自 Firefox 的数据推导。
- browser-compat-data 未记录 Safari 的支持。
- browser-compat-data 未记录 iOS 版 Safari 的支持。
- 由 browser-compat-data 镜像自 Safari 的数据推导。
- 由 browser-compat-data 镜像自 Chrome Android 的数据推导。
- 由 browser-compat-data 镜像自 Chrome Android 的数据推导。
根据 browser-compat-data 的记录,Android 版 Chrome 的条目被标记为桌面版 Chrome 条目的镜像,意味着其支持数据是继承自桌面条目。
在 manifest 中声明要扩展的源:
{ "scope_extensions": [ { "type": "origin", "origin": "https://help.example.com" }, { "type": "origin", "origin": "https://example.de" } ]}根据该 explainer 的说明,每个被列出的源都必须通过托管
/.well-known/web-app-origin-association 来主动接受,其中命名了应用的 manifest
id:
{ "https://example.com/app": { "scope": "/" }}根据 MDN 的说明,该文件在两个方向上建立关联——应用在其 manifest 中声明扩展, 目标源则明确对此进行授权。
运行时检测与回退
Section titled “运行时检测与回退”两份来源都没有定义能把浏览器是否识别 scope_extensions 回传给页面的
JavaScript API。下面的代码只能检测页面已有的 manifest 对象中是否声明了该
成员——无法确认浏览器是否真的应用了它——并在该成员缺失或格式不对时回退为空列表:
function getScopeExtensions(manifest) { if (!('scope_extensions' in manifest) || !Array.isArray(manifest.scope_extensions)) { // 成员缺失或格式不对——回退为不扩展范围。 return []; } return manifest.scope_extensions;}- 根据 MDN 的说明,这是一项实验性特性——在生产环境中依赖它之前,请先检查当前的 浏览器支持情况。
- 根据 browser-compat-data 的记录,Android 版 Chrome 镜像自桌面版 Chrome 条目, 因此其列出的支持数据是继承自桌面条目。
- 根据 MDN 的说明,正确接入后,跳转到应用(扩展)范围之外的链接会“如预期般显示 为外部位置”。
- 根据该 explainer 的说明,当应用窗口中的页面导航到(扩展)范围之外的 URL 时, 部分浏览器实现可能会打开新标签页或普通浏览器窗口中的浏览上下文,而不是留在 应用窗口内。
- 根据该 explainer 的说明,每个被扩展的源都必须托管自己的
/.well-known/web-app-origin-association文件——如果目标源上的文件缺失或 配置有误,无论应用自身的 manifest 中如何声明,该扩展都不会被授权。
- manifest: handle_links 支持情况 —— 另一个 Web App Manifest 成员。
- manifest: scope 支持情况 ——
scope_extensions所扩展的基础范围边界。
← 返回兼容性浏览器。