NotificationEvent
åºçº¿
广æ³å¯ç¨
*
èª 2023å¹´3æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
* æ¤ç¹æ§çæäºé¨åçæ¯æç¨åº¦å¯è½ææä¸åã
夿³¨ï¼ æ¤ç¹æ§ä» å¨ Service Worker ä¸å¯ç¨ã
Notifications API ç NotificationEvent æ¥å£è¡¨ç¤ºå¨ ServiceWorker ç ServiceWorkerGlobalScope ä¸è§¦åçéç¥äºä»¶ã
该æ¥å£ç»§æ¿èª ExtendableEvent æ¥å£ã
夿³¨ï¼åªæå¨ ServiceWorkerGlobalScope 对象ä¸è§¦åçæä¹
éç¥äºä»¶æä¼ä½¿ç¨ NotificationEvent æ¥å£ãéæä¹
éç¥äºä»¶å¨ Notification 对象ä¸è§¦åï¼ä½¿ç¨ Event æ¥å£ã
æé 彿°
NotificationEvent()-
å建ä¸ä¸ªæ°ç
NotificationEvent对象ã
å®ä¾å±æ§
è¿ä»å
¶ç¶æ¥å£ ExtendableEvent ç»§æ¿å±æ§ã
NotificationEvent.notificationåªè¯»-
è¿åä¸ä¸ª
Notification对象ï¼è¡¨ç¤ºåå»ä»¥è§¦åäºä»¶çéç¥ã NotificationEvent.actionåªè¯»-
è¿åç¨æ·åå»çéç¥æé®çå符串 IDãå¦æç¨æ·å廿使é®ä»¥å¤çéç¥ï¼æè éç¥æ²¡ææé®ï¼åæ¤å¼è¿å空å符串ã
å®ä¾æ¹æ³
è¿ä»å
¶ç¶æ¥å£ ExtendableEvent ç»§æ¿æ¹æ³ã
示ä¾
self.addEventListener("notificationclick", (event) => {
console.log(`éç¥è¢«ç¹å»ï¼${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("/");
}),
);
});
è§è
| è§è |
|---|
| Notifications API > # notificationevent > |
夿³¨ï¼æ¤æ¥å£å¨ Notifications API 䏿å®ï¼ä½æ¯å¯ä»¥éè¿ ServiceWorkerGlobalScope 访é®ã