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

浏览器兼容性

另见