message
event of the
ServiceWorkerGlobalScope
interface occurs when incoming messages are received. Controlled pages can use the
ServiceWorker.postMessage()
method to send messages to service workers.
The service worker can optionally send a response back via the
Client.postMessage()
, corresponding to the controlled page.
| 冒泡 | No |
|---|---|
| 可取消 | No |
| 接口 |
ExtendableMessageEvent
|
| 事件处理程序特性 |
onmessage
|
In the below example a page gets a handle to the
ServiceWorker
object via
ServiceWorkerRegistration.active
, and then calls its
postMessage()
函数。
// in the page being controlled
if (navigator.serviceWorker) {
navigator.serviceWorker.register('service-worker.js');
navigator.serviceWorker.addEventListener('message', event => {
// event is a MessageEvent object
console.log(`The service worker sent me a message: ${event.data}`);
});
navigator.serviceWorker.ready.then( registration => {
registration.active.postMessage("Hi service worker");
});
}
The service worker can receive the message by listening to the
message
event:
// in the service worker
addEventListener('message', event => {
// event is an ExtendableMessageEvent object
console.log(`The client sent me a message: ${event.data}`);
event.source.postMessage("Hi client");
});
| 规范 | 状态 |
|---|---|
|
服务工作者
The definition of 'message' in that specification. |
工作草案 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
message
event
|
Chrome 40 | Edge ≤79 |
Firefox
44
注意事项
|
IE 不支持 No | Opera 24 | Safari 11.1 | WebView Android 40 | Chrome Android 40 | Firefox Android 44 | Opera Android 24 | Safari iOS 11.3 | Samsung Internet Android 4.0 |
完整支持
不支持
实验。期望将来行为有所改变。
见实现注意事项。