ServiceWorkerMessageEvent - 含有关发送到 ServiceWorkerContainer 的事件信息

已废弃
该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

重要:在现代浏览器中,此接口已被弃用。服务工作线程消息现在将使用 MessageEvent 接口,以与其他 Web 消息传递功能保持一致。

ServiceWorkerMessageEventServiceWorker 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]);
});

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持45

17

16

44 — 5512 不支持24 不支持
ServiceWorkerMessageEvent() 构造函数45

17

16

44 — 5512 不支持24 不支持
data45

17

16

44 — 5512 不支持24 不支持
lastEventId45

17

16

44 — 5512 不支持24 不支持
origin45

17

16

44 — 5512 不支持24 不支持
ports45

17

16

44 — 5512 不支持24 不支持
source45

17

16

44 — 5512 不支持24 不支持

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS 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 接口。

相关链接