This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.
The ServiceWorkerGlobalScope.onnotificationclick property is an event handler called whenever the notificationclick
event is dispatched on the ServiceWorkerGlobalScope
object, that is when a user clicks on a displayed notification spawned by ServiceWorkerRegistration.showNotification()
.
Notifications created on the main thread or in workers which aren't service workers using the Notification()
constructor will instead receive a click
event on the Notification
object itself.
Note: Trying to create a notification inside the ServiceWorkerGlobalScope
using the Notification()
constructor will throw an error.
SyntaxEdit
ServiceWorkerGlobalScope.onnotificationclick = function(NotificationEvent) { ... };
ExampleEdit
self.onnotificationclick = function(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(function(clientList) {
for (var i = 0; i < clientList.length; i++) {
var client = clientList[i];
if (client.url == '/' && 'focus' in client)
return client.focus();
}
if (clients.openWindow)
return clients.openWindow('/');
}));
};
SpecificationsEdit
Specification | Status | Comment |
---|---|---|
Notifications API The definition of 'onnotificationclick' in that specification. |
Recommendation | Initial definition. This property is specified on the Notifications_API even though it's part of ServiceWorkerGlobalScope . |
Browser compatibilityEdit
[1] Service workers (and Push) have been disabled in the Firefox 45 Extended Support Release (ESR.)