ServiceWorkerContainer: message 事件
语法
在诸如addEventListener()
之类的事件方法中使用事件名,或设置事件处理程序属性。
js
addEventListener("message", (event) => {});
onmessage = (event) => {};
事件类型
一个MessageEvent
。继承自Event
。
事件属性
此接口还从其父级Event
继承属性。
MessageEvent.data
只读-
消息发射器发送的数据。
MessageEvent.origin
只读-
表示消息发射器来源的字符串。
MessageEvent.lastEventId
只读-
表示事件唯一 ID 的字符串。
MessageEvent.source
只读-
一个
MessageEventSource
(可以是WindowProxy、MessagePort
或ServiceWorker
对象),表示消息发射器。 MessageEvent.ports
只读-
一个
MessagePort
对象的数组,表示与消息发送通过的通道关联的端口(在适当的情况下,例如在通道消息传递中或在向共享工作者发送消息时)。
示例
在此示例中,service worker 从fetch
事件获取客户端 ID,然后使用Client.postMessage
向其发送消息
js
// service-worker.js
async function messageClient(clientId) {
const client = await clients.get(clientId);
client.postMessage("Hi client!");
}
addEventListener("fetch", (event) => {
messageClient(event.clientId);
event.respondWith(() => {
// …
});
});
客户端可以通过监听message
事件接收消息
js
// main.js
navigator.serviceWorker.addEventListener("message", (message) => {
console.log(message);
});
或者,客户端可以使用onmessage
事件处理程序接收消息
js
// main.js
navigator.serviceWorker.onmessage = (message) => {
console.log(message);
};
规范
规范 |
---|
Service Workers # dom-serviceworkercontainer-onmessage |
浏览器兼容性
BCD 表格仅在浏览器中加载