title | slug | l10n | ||
---|---|---|---|---|
NotificationEvent |
Web/API/NotificationEvent |
|
{{APIRef("Web Notifications")}}{{AvailableInWorkers("service")}}
NotificationEvent
は{{domxref("Notifications API", "通知 API", "", "nocode")}}のインターフェイスで、サービスワーカー ({{domxref("ServiceWorker")}}) の {{domxref("ServiceWorkerGlobalScope")}} で配信される通知イベントを表します。
このインターフェイスは {{domxref("ExtendableEvent")}} インターフェイスを継承しています。
メモ: {{domxref("ServiceWorkerGlobalScope")}} オブジェクトで発行される持続的な通知イベントのみが、
NotificationEvent
インターフェイスを実装します。{{domxref("Notification")}} オブジェクトで発行される非持続的な通知イベントは、Event
インターフェイスを実装します。
{{InheritanceDiagram}}
- {{domxref("NotificationEvent.NotificationEvent","NotificationEvent()")}}
- : 新しい
NotificationEvent
オブジェクトを作成します。
- : 新しい
親インターフェイスである {{domxref("ExtendableEvent")}} から継承したプロパティもあります。
- {{domxref("NotificationEvent.notification")}} {{ReadOnlyInline}}
- : イベントを発生させるためにクリックされた通知を表す {{domxref("Notification")}} オブジェクトを返します。
- {{domxref("NotificationEvent.action")}} {{ReadOnlyInline}}
- : ユーザーがクリックした通知ボタンの文字列 ID を返します。ユーザーがアクションボタン以外の場所で通知をクリックした場合、または通知にボタンがない場合、この値は空の文字列を返します。
親インターフェイスである {{domxref("ExtendableEvent")}} から継承したメソッドもあります。
self.addEventListener("notificationclick", (event) => {
console.log(`On notification click: ${event.notification.tag}`);
event.notification.close();
// これは、現在のページが既に開いているかどうかを確認し、
// そうならばフォーカスします
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("/");
}),
);
});
{{Specifications}}
Note
このインターフェイスは通知 API で定義されていますが、{{domxref("ServiceWorkerGlobalScope")}} を通してアクセスします。
{{Compat}}