postMessage()
方法在
Client
interface allows a service worker to send a message to a client (a
Window
,
Worker
,或
SharedWorker
). The message is received in the "
message
" event on
navigator.serviceWorker
.
client.postMessage(message[, transfer]);
client.postMessage(message[, { transfer }]);
message
transfer
可选
undefined
.
Sending a message from a service worker to a client:
addEventListener('fetch', event => {
event.waitUntil(async function() {
// Exit early if we don't have access to the client.
// Eg, if it's cross-origin.
if (!event.clientId) return;
// Get the client.
const client = await clients.get(event.clientId);
// Exit early if we don't get the client.
// Eg, if it closed.
if (!client) return;
// Send a message to the client.
client.postMessage({
msg: "Hey I just got a fetch from you!",
url: event.request.url
});
}());
});
Receiving that message:
navigator.serviceWorker.addEventListener('message', event => {
console.log(event.data.msg, event.data.url);
});
| 规范 | 状态 | 注释 |
|---|---|---|
|
服务工作者
The definition of 'postMessage()' in that specification. |
工作草案 | 初始定义。 |
| 桌面 | 移动 | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
postMessage
|
Chrome 45 | Edge ≤79 |
Firefox
44
注意事项
|
IE 不支持 No | Opera 32 | Safari 不支持 No | WebView Android 45 | Chrome Android 45 | Firefox Android 44 | Opera Android 32 | Safari iOS 不支持 No | Samsung Internet Android 5.0 |
完整支持
不支持
实验。期望将来行为有所改变。
见实现注意事项。