ServiceWorkerGlobalScope:activate 事件

Baseline 已廣泛支援

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

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

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

ServiceWorkerRegistration 獲得一個新的 ServiceWorkerRegistration.active 工作執行緒時,會觸發 ServiceWorkerGlobalScope 介面的 activate 事件。

此事件不可取消,也不會冒泡。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("activate", (event) => { })

onactivate = (event) => { }

事件型別

一個 ExtendableEvent。繼承自 Event

Event ExtendableEvent

事件屬性

沒有實現任何特定的屬性,但繼承了其父級 Event 的屬性。

示例

以下程式碼片段展示瞭如何使用 activate 事件處理程式來升級快取。

js
self.addEventListener("activate", (event) => {
  const cacheAllowlist = ["v2"];

  event.waitUntil(
    caches.keys().then((cacheNames) =>
      Promise.all(
        cacheNames.map((cacheName) => {
          if (!cacheAllowlist.includes(cacheName)) {
            return caches.delete(cacheName);
          }
          return undefined;
        }),
      ),
    ),
  );
});

您也可以透過 onactivate 屬性設定事件處理程式。

js
self.onactivate = (event) => {
  // …
};

規範

規範
Service Workers
# service-worker-global-scope-activate-event
Service Workers
# dom-serviceworkerglobalscope-onactivate

瀏覽器相容性

另見