ServiceWorkerGlobalScope: push 事件

Baseline 已广泛支持

此功能已成熟,并可在许多设备和浏览器版本上运行。自 2023 年 3 月以来,它已在各种浏览器中可用。

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

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

当 service worker 接收到推送消息时,会将 push 事件发送到 service worker 的全局作用域(由 ServiceWorkerGlobalScope 接口表示)。

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

语法

在诸如 addEventListener() 之类的方法中使用事件名称,或设置事件处理程序属性。

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

onpush = (event) => { }

事件类型

一个 PushEvent。继承自 Event

Event ExtendableEvent PushEvent

事件属性

继承其父级 ExtendableEvent 的属性。其他属性

PushEvent.data 只读

返回一个指向 PushMessageData 对象的引用,该对象包含发送到 PushSubscription 的数据。

示例

此示例设置了一个 push 事件的处理程序,该处理程序接收 JSON 数据,解析它,并根据消息中包含的信息分派消息以进行处理。

js
self.addEventListener("push", (event) => {
  let message = event.data.json();

  switch (message.type) {
    case "init":
      doInit();
      break;
    case "shutdown":
      doShutdown();
      break;
  }
});

规范

规范
推送 API
# 对 serviceworkerglobalscope 接口的扩展
推送 API
# dom-serviceworkerglobalscope-onpush

浏览器兼容性

另见