ServiceWorkerMessageEvent - 含有关发送到 ServiceWorkerContainer 的事件信息
已废弃
该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。
重要:在现代浏览器中,此接口已被弃用。服务工作线程消息现在将使用
MessageEvent
接口,以与其他 Web 消息传递功能保持一致。
ServiceWorkerMessageEvent
是 ServiceWorker API
的接口,包含有关发送到 ServiceWorkerContainer
的事件信息。它扩展了默认 message
事件,以允许将 ServiceWorker
对象设置为消息源。当从服务工作线程收到的消息触发该事件对象时,可以通过 message
事件的处理函数来访问该事件对象。
该接口继承自 Event
接口。
构造函数
ServiceWorkerMessageEvent.ServiceWorkerMessageEvent()
创建一个新的 ServiceWorkerMessageEvent
对象实例。
属性
从其父接口继承了 Event
属性。
ServiceWorkerMessageEvent.data
只读
返回事件的数据。它可以是任何数据类型。
ServiceWorkerMessageEvent.origin
只读
返回服务工作线程的环境设置对象的来源。
ServiceWorkerMessageEvent.lastEventId
只读
在服务器发送的事件中表示事件源的最后一个事件 ID。
ServiceWorkerMessageEvent.source
只读
返回对发送消息的服务工作线程的引用。
ServiceWorkerMessageEvent.ports
只读
返回 MessagePort
对象的数组。
方法
从其父接口继承了 Event
方法。
实例
当在主线程内使用以下代码在它和服务工作线程之间建立消息通道以在两者之间发送消息时,onmessage
的事件对象将是 ServiceWorkerMessageEvent
。
navigator.serviceWorker.ready.then(function(reg) {
// ...
// 设置消息通道以与服务工作线程进行通信
var channel = new MessageChannel();
channel.port1.onmessage = function(e) {
console.log(e);
handleChannelMessage(e.data);
}
mySW = reg.active;
mySW.postMessage('hello', [channel.port2]);
});
桌面浏览器兼容性
特性 | Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|---|
基础支持 | 45 | 17 16 | 44 — 5512 | 不支持 | 24 | 不支持 |
ServiceWorkerMessageEvent() 构造函数 | 45 | 17 16 | 44 — 5512 | 不支持 | 24 | 不支持 |
data | 45 | 17 16 | 44 — 5512 | 不支持 | 24 | 不支持 |
lastEventId | 45 | 17 16 | 44 — 5512 | 不支持 | 24 | 不支持 |
origin | 45 | 17 16 | 44 — 5512 | 不支持 | 24 | 不支持 |
ports | 45 | 17 16 | 44 — 5512 | 不支持 | 24 | 不支持 |
source | 45 | 17 16 | 44 — 5512 | 不支持 | 24 | 不支持 |
移动浏览器兼容性
特性 | Android | Chrome for Android | Edge mobile | Firefox for Android | IE mobile | Opera Android | iOS Safari |
---|---|---|---|---|---|---|---|
基础支持 | 不支持 | 45 | 未知 | 44 — 55 | 未知 | 24 | 不支持 |
ServiceWorkerMessageEvent() 构造函数 | 不支持 | 45 | 未知 | 44 — 55 | 未知 | 24 | 不支持 |
data | 不支持 | 45 | 未知 | 44 — 55 | 未知 | 24 | 不支持 |
lastEventId | 不支持 | 45 | 未知 | 44 — 55 | 未知 | 24 | 不支持 |
origin | 不支持 | 45 | 未知 | 44 — 55 | 未知 | 24 | 不支持 |
ports | 不支持 | 45 | 未知 | 44 — 55 | 未知 | 24 | 不支持 |
source | 不支持 | 45 | 未知 | 44 — 55 | 未知 | 24 | 不支持 |
1. 在 Firefox 45 和 52 扩展支持版本(ESR)中,服务 worker(和 Push)已被禁用。
2. 在 Firefox 55 及更高版本中,必须改用标准 MessageEvent
接口。