我们的志愿者还没有将这篇文章翻译为 中文 (简体)。加入我们帮助完成翻译!
您也可以阅读此文章的English (US)版。
This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for usage in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the specification changes.
The ExtendableMessageEvent
interface of the ServiceWorker API
represents the event object of a message
event fired on a service worker (when a channel message is received on the ServiceWorkerGlobalScope
from another context) — extends the lifetime of such events.
This interface inherits from the ExtendableEvent
interface.
Constructor
ExtendableMessageEvent.ExtendableMessageEvent()
- Creates a new
ExtendableMessageEvent
object instance.
Properties
Inherits properties from its parent, ExtendableEvent
.
ExtendableMessageEvent.data
Read only- Returns the event's data. It can be any data type.
ExtendableMessageEvent.origin
Read only- Returns the origin of the
ServiceWorkerClient
that sent the message ExtendableMessageEvent.lastEventId
Read only- Represents, in server-sent events, the last event ID of the event source.
ExtendableMessageEvent.source
Read only- Returns a reference to the service worker that sent the message.
ExtendableMessageEvent.ports
Read only- Returns the array containing the
MessagePort
objects representing the ports of the associated message channel.
Methods
Inherits methods from its parent, ExtendableEvent
.
Examples
When the following code is used inside a service worker to respond to a push messages by sending the data received via PushMessageData
to the main context via a channel message, the event object of onmessage
will be a 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]; }
Specifications
Specification | Status | Comment |
---|---|---|
Service Workers The definition of 'ExtendableMessageEvent' in that specification. |
Working Draft | Initial definition. |
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Basic support | (Yes) | 45.0 (45.0)[1] | No support | ? | No support |
data property | 51.0 | ? | ? | ? | ? |
Feature | Android | Android Webview | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support | No support | No support | (Yes) | (Yes) | No support | ? | No support | (Yes) |
data property | No support | No support | ? | ? | ? | ? | ? | 51.0 |
[1] Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR.)