NotificationEvent

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

NotificationEvent通知 API 的一个接口,它表示在 ServiceWorkerGlobalScope(一个 ServiceWorker)上分派的通知事件。

此接口继承自 ExtendableEvent 接口。

注意:只有在 ServiceWorkerGlobalScope 对象上触发的持久性通知事件才会实现 NotificationEvent 接口。在 Notification 对象上触发的非持久性通知事件会实现 Event 接口。

Event ExtendableEvent NotificationEvent

构造函数

NotificationEvent()

创建一个新的 NotificationEvent 对象。

实例属性

还继承了其父接口 ExtendableEvent 的属性.

NotificationEvent.notification 只读

返回一个 Notification 对象,表示触发事件的被点击的通知。

NotificationEvent.action 只读

返回用户点击的通知按钮的字符串 ID。如果用户点击了通知的非操作按钮部分,或通知没有按钮,则此值返回一个空字符串。

实例方法

还继承了其父接口 ExtendableEvent 的方法.

示例

js
self.addEventListener("notificationclick", (event) => {
  console.log(`On notification click: ${event.notification.tag}`);
  event.notification.close();

  // This looks to see if the current is already open and
  // focuses if it is
  event.waitUntil(
    clients
      .matchAll({
        type: "window",
      })
      .then((clientList) => {
        for (const client of clientList) {
          if (client.url === "/" && "focus" in client) return client.focus();
        }
        if (clients.openWindow) return clients.openWindow("/");
      }),
  );
});

规范

规范
通知 API 标准
# notificationevent

注意:此接口在 通知 API 中指定,但通过 ServiceWorkerGlobalScope 访问。

浏览器兼容性

BCD 表格仅在浏览器中加载