ExtendableMessageEvent - ServiceWorker API 中的接口
这是一个实验中的功能
此功能某些浏览器尚在开发中,请参考浏览器兼容性表格以得到在不同浏览器中适合使用的前缀。由于该功能对应的标准文档可能被重新修订,所以在未来版本的浏览器中该功能的语法和行为可能随之改变。
ExtendableMessageEvent
是 ServiceWorker API
中的接口,表示 message
事件的事件对象在服务 worker 上触发(当在 ServiceWorkerGlobalScope
上从另一个上下文收到通道消息时) - 可延长该类事件的生命周期。
该接口继承了 ExtendableEvent
接口。
构造函数
ExtendableMessageEvent.ExtendableMessageEvent()
创建一个新的 ExtendableMessageEvent
对象实例。
属性
从其父接口 ExtendableEvent
继承了属性。
ExtendableMessageEvent.data
只读
返回事件的数据。它可以是任何数据类型。
ExtendableMessageEvent.origin
只读
返回发送消息的 ServiceWorkerClient
的来源
ExtendableMessageEvent.lastEventId
只读
在server-sent events中表示事件源的最后一个事件 ID。
ExtendableMessageEvent.source
只读
返回对发送消息的服务 worker 的引用。
ExtendableMessageEvent.ports
只读
返回包含 MessagePort
对象的数组,该对象表示关联消息通道的端口。
方法
从其父接口 ExtendableEvent
继承了方法。
实例
当在服务 worker 内部使用以下代码通过通道消息,将通过 PushMessageData
接收的数据发送到主上下文来响应推送消息时, onmessage
的事件对象将是 ExtendableMessageEvent
。
var port;
self.addEventListener('push', function(e) {
var obj = e.data.json();
if(obj.action === 'subscribe' || obj.action === 'unsubscribe') {
port.postMessage(obj);
} else if(obj.action === 'init' || obj.action === 'chatMsg') {
port.postMessage(obj);
}
});
self.onmessage = function(e) {
console.log(e);
port = e.ports[0];
}
规范
规范 | 状态 | 备注 |
---|---|---|
Service Workers ExtendableMessageEvent 的定义 |
编者的草案 | 初始定义。 |
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
data |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
lastEventId |
未知 | 17 | 未知 | 未知 | 未知 | 未知 |
origin |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
ports |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
source |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
data |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
lastEventId |
未知 | 未知 | 17 | 未知 | 未知 | 未知 | 未知 |
origin |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
ports |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |
source |
未知 | 未知 | 未知 | 未知 | 未知 | 未知 | 未知 |