ServiceWorkerContainer: controller 屬性

Baseline 已廣泛支援

此功能已成熟,可跨多種裝置和瀏覽器版本工作。它自 ⁨2018 年 4 月⁩ 起已在所有瀏覽器中可用。

安全上下文: 此功能僅在安全上下文(HTTPS)中可用,且支援此功能的瀏覽器數量有限。

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

ServiceWorkerContainer 介面的 controller 只讀屬性表示控制當前頁面(與此 ServiceWorkerContainer 關聯)的活動 service worker,如果該頁面沒有活動或正在啟用的 service worker,則返回 null

這與 ServiceWorkerRegistration.active 返回的物件相同。

如果 ServiceWorker 物件的 state 處於 activatingactivated,則返回該物件,否則如果沒有活動的工作執行緒,則返回 null

如果請求是強制重新整理(Shift + 重新整理),此屬性也會返回 null

示例

測試頁面是否由 service worker 控制

js
if ("serviceWorker" in navigator) {
  // Do a one-off check to see if a service worker's in control.
  if (navigator.serviceWorker.controller) {
    console.log(
      `This page is currently controlled by: ${navigator.serviceWorker.controller}`,
    );
  } else {
    console.log("This page is not currently controlled by a service worker.");
  }
} else {
  console.log("Service workers are not supported.");
}

規範

規範
Service Workers
# navigator-service-worker-controller

瀏覽器相容性