ServiceWorkerGlobalScope.onpush

The ServiceWorkerGlobalScope.onpush event of the ServiceWorkerGlobalScope interface is fired whenever a push message is received by a service worker via a push server.

Syntax

ServiceWorkerGlobalScope.onpush = function(PushEvent) { ... }
self.addEventListener('push', function(PushEvent) { ... })

Example

The following example takes data from a PushEvent and displays it on all of the service worker's clients. The data payload of the push message is available in the event object's data property (PushEvent.data, which contains a PushMessageData object.)

self.addEventListener('push', function(event) {
  if (!(self.Notification && self.Notification.permission === 'granted')) {
    return;
  }

  var data = {};
  if (event.data) {
    data = event.data.json();
  }
  var title = data.title || "Something Has Happened";
  var message = data.message || "Here's something you might want to check out.";
  var icon = "images/new-notification.png";

  var notification = new Notification(title, {
    body: message,
    tag: 'simple-push-demo-notification',
    icon: icon
  });

  notification.addEventListener('click', function() {
    if (clients.openWindow) {
      clients.openWindow('https://example.blog.com/2015/03/04/something-new.html');
    }
  });
});

Specifications

Specification Status Comment
Push API
The definition of 'onpush' in that specification.
Working Draft Initial definition. This event is specified in the Push API, but accessed through ServiceWorkerGlobalScope.

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support40 ?441 No24 No
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support4040 ?4424 No4.0

1. Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR).

See also

Document Tags and Contributors

Last updated by: fscholz,