NavigationPreloadManager: getState() 方法

Baseline 已广泛支持

此功能已经非常成熟,可在多种设备和浏览器版本上使用。自 2022 年 4 月以来,它已在各大浏览器中得到支持。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

NavigationPreloadManager 接口的 getState() 方法返回一个 Promise,该 Promise 解析为一个对象,其属性指示预加载是否已启用,以及将在 Service-Worker-Navigation-Preload HTTP 标头中发送的值。

语法

js
getState()

参数

无。

返回值

一个 Promise,它会解析为一个包含以下属性的对象

enabled

如果已启用预加载,则为 true,否则为 false

headerValue

一个字符串,包含预加载 fetch() 后将在 Service-Worker-Navigation-Preload HTTP 标头中发送的值。此值默认为 true,除非使用 NavigationPreloadManager.setHeaderValue() 更改了该值。

异常

InvalidStateError DOMException

与此 NavigationPreloadManager 所属的注册关联的没有活动工作线程。

示例

下面的代码显示了一个在 service worker 就绪后发起的当前状态请求。

js
navigator.serviceWorker.ready
  .then((registration) => registration.navigationPreload.getState())
  .then((state) => {
    console.log(state.enabled); // boolean
    console.log(state.headerValue); // string
  })
  .catch((e) =>
    console.error(`NavigationPreloadManager not supported: ${e.message}`),
  );

规范

规范
Service Workers
# dom-navigationpreloadmanager-getstate

浏览器兼容性