跳转到内容

manifest: handle_links 支持情况

发布于 更新于

manifest: handle_links —— 一个 WICG 提案中的 Web App Manifest 成员,让已安装的 PWA 建议范围内的链接是否应在应用内打开而非浏览器中打开,取值为 preferred、 not-preferred 和默认值 auto。

  • 图例
  • 支持
  • 部分支持
  • 需开启标志
  • 不支持
  • 未知
浏览器 / 平台支持版本置信度来源备注
Chrome (Desktop)不支持—中来源1

源数据: /compatibility/manifest-handle-links.json · 全球使用占比: 0 % (StatCounter 2026-05)

来源: 规范 · MDN · 最近核验 2026-09-07 · 置信度: 中 (由来源计算)

根据 chromestatus.com 的记录,Chrome 将该特性自身的实现状态标记为“On hold” (暂缓),且没有记录任何发布里程碑。

在 manifest 中声明该成员,取值为以下三者之一:

{
"handle_links": "preferred"
}

根据该 explainer 的说明,preferred 意味着“用户代理应在已安装的应用内打开范围内 的链接”,not-preferred 意味着不应这样做,而 auto——省略该成员时的默认值—— 意味着“用户代理应为该平台选择合适的行为”。该 explainer 将这些取值描述为给用户代理 的建议,而非必须遵循的指令。

该 explainer 没有定义能把 handle_links 支持情况回传给页面的 JavaScript API——它只把这个成员描述为一种 manifest 层面的偏好设置。下面的代码从页面已有的 manifest 对象(例如通过 fetch('manifest.json').then(r => r.json()) 获取并解析 得到的对象)中把 handle_links 读取出来,并在成员缺失时提供回退:

async function getHandleLinksPreference(manifest) {
if (!('handle_links' in manifest)) {
// 成员被省略——explainer 指出默认值为 "auto"。
return 'auto';
}
return manifest.handle_links;
}

这只是把声明的偏好值读取回来;它无法确认浏览器是否真的在遵循这个偏好,因为 explainer 并未把这一点回传给页面。因此,不应构建依赖 handle_links 生效才能 工作的链接导航——保留范围内的链接为普通 <a> 标签,让 handle_links(或其缺失) 自行生效。

  • 根据 chromestatus.com 的记录,该特性在 Chrome 中的实现状态为“On hold”,且没有 发布里程碑——不要依赖 preferred 在当前生产环境中生效。
  • 根据该 explainer 的说明,对于 preferred,用户代理“应当(should)”在应用内 打开范围内的链接;对于 not-preferred 则“不应(should not)”这样做;只有 auto 明确将选择权交给“适合该平台的行为”。
  • 根据该 explainer 的说明,handle_links 作用于应用 manifest 的 scope;当 manifest 中同时声明了 scope_extensions 时,该资格范围会扩展到其中列出的 额外源。
  • 当 manifest 中省略 handle_links 时,默认值为 auto。

← 返回兼容性浏览器。