PushMessageData - 以各种格式获取服务器发送的推送数据
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
PushMessageData
是 Push API 的接口,提供了一些方法,使您可以以各种格式获取服务器发送的推送数据。
与 Fetch API 中的类似方法不同,后者的方法仅允许调用一次,而该接口的方法可以多次调用。
通过 Push API 接收的消息将由 push 服务加密发送,然后由浏览器自动解密,然后才能通过 PushMessageData
接口的方法进行访问。
属性
无。
方法
PushMessageData.arrayBuffer()
将数据提取为 ArrayBuffer
对象。
PushMessageData.blob()
将数据提取为 Blob
对象。
PushMessageData.json()
将数据提取为 JSON 对象。
PushMessageData.text()
将数据提取为纯文本字符串。
实例
self.addEventListener('push', function(event) {
var obj = event.data.json();
if(obj.action === 'subscribe' || obj.action === 'unsubscribe') {
fireNotification(obj, event);
port.postMessage(obj);
} else if(obj.action === 'init' || obj.action === 'chatMsg') {
port.postMessage(obj);
}
});
规范
规范 | 状态 | 备注 |
---|---|---|
Push API PushMessageData 的定义 |
工作草案 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 50 | 未知 | 441 | 不支持 | 37 | 不支持 |
arrayBuffer | 50 | 未知 | 441 | 不支持 | 37 | 不支持 |
blob | 50 | 未知 | 441 | 不支持 | 37 | 不支持 |
json | 50 | 未知 | 441 | 不支持 | 37 | 不支持 |
text | 50 | 未知 | 441 | 不支持 | 37 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 50 | 未知 | 48 | 未知 | 37 | 不支持 |
arrayBuffer | 不支持 | 50 | 未知 | 48 | 未知 | 37 | 不支持 |
blob | 不支持 | 50 | 未知 | 48 | 未知 | 37 | 不支持 |
json | 不支持 | 50 | 未知 | 48 | 未知 | 37 | 不支持 |
text | 不支持 | 50 | 未知 | 48 | 未知 | 37 | 不支持 |
1. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务 worker(和 Push)已被禁用。