为未来的显示模式做好准备

PWA 可以使用“display_override”属性来处理特殊显示模式。

Web 应用清单是一个 JSON 文件,用于告知浏览器您的渐进式 Web 应用及其安装在用户的桌面设备或移动设备上时的行为方式。通过 display 属性,您可以自定义应用启动时显示的浏览器界面。例如,您可以隐藏地址栏和浏览器 Chrome。甚至可以将游戏设为全屏启动。 简要回顾一下,以下是在撰写本文时指定的显示模式。

属性 使用情形
fullscreen 打开不含任何浏览器界面的 Web 应用,并占据整个可用显示区域。
standalone 打开 Web 应用,在外观和风格上与独立应用相似。该应用在与浏览器分开的独立窗口中运行,并隐藏网址栏等标准浏览器界面元素。
minimal-ui 此模式与 standalone 类似,但只为用户提供了一组用于控制导航(例如返回和重新加载)的最小界面元素。
browser 标准的浏览器体验。

这些显示模式遵循明确定义的回退链 ("fullscreen""standalone""minimal-ui""browser")。如果浏览器不支持给定模式,则会回退到链中的下一个显示模式。

display 属性的缺点

这种硬线回退链方法存在三个问题:

  • 如果给定浏览器不支持 "minimal-ui",开发者必须重新进入 "browser" 显示模式才能请求 "minimal-ui"
  • 开发者无法处理跨浏览器差异,例如,对于 "standalone" 模式,浏览器是否会在窗口中包含或排除返回按钮
  • 当前行为使得无法以向后兼容的方式引入新的显示模式,因为标签页式应用模式等探索在回退链中没有自然位置。

display_override 属性

这些问题可通过 display_override 属性解决,浏览器会在 display 属性之前考虑该属性。其值是被视为按顺序排列的字符串序列,并应用第一个受支持的显示模式。如果都不支持任何此类字段,浏览器会回退到评估 display 字段。

在下面的示例中,显示模式回退链如下所示。(有关 "window-controls-overlay" 的详细信息不在本文的讨论范围内。)

  1. "window-controls-overlay"(首先,了解 display_override。)
  2. "minimal-ui"
  3. "standalone"(在 display_override 用尽时,评估 display。)
  4. "minimal-ui"(最后,使用 display 后备链。)
  5. "browser"
{
  "display_override": ["window-controls-overlay", "minimal-ui"],
  "display": "standalone",
}

为了保持向后兼容性,未来的任何显示模式都只能用作 display_override 的值,而不能用作 display。不支持 display_override 的浏览器会回退到 display 属性,并忽略 display_override 作为未知的 Web 应用清单属性。

确认

display_override 属性由 Daniel Murphy 正式规定。