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

瀏覽器相容性