Experimental: 这是一个实验中的功能

The PushMessageData interface of the Push API provides methods which let you retrieve the push data sent by a server in various formats.

Unlike the similar methods in the Fetch API, which only allow the method to be invoked once, these methods can be called multiple times.




PushMessageData.arrayBuffer() (en-US)
Extracts the data as an ArrayBuffer object.
PushMessageData.blob() (en-US)
Extracts the data as a Blob object.
Extracts the data as a JSON object.
PushMessageData.text() (en-US)
Extracts the data as a plain text string.


In our Push API Demo, we send JSON objects via push messages from our server by first converting them to strings via JSON.stringify() (see server.js example):

webPush.sendNotification(subscriber[2], 200, obj.key, JSON.stringify({
  action: 'chatMsg',
  name: obj.name,
  msg: obj.msg

When the message reaches the service worker, we convert the data back to a JSON object using PushMessageData.json() before working out what to do with it next:

self.addEventListener('push', function(event) {
  var obj = event.data.json();

  if(obj.action === 'subscribe' || obj.action === 'unsubscribe') {
    fireNotification(obj, event);
  } else if(obj.action === 'init' || obj.action === 'chatMsg') {


Specification Status Comment
Push API
Working Draft Initial definition.

Browser compatibility

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help! (en-US)
Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Basic support 50.0 44.0 (44.0)[1] 未实现 未实现 未实现
Feature Android Android Webview Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome for Android
Basic support 未实现 未实现 48.0 (48)[2] 未实现 未实现 未实现 未实现 50.0

See also