--- title: Client.postMessage() slug: Web/API/Client/postMessage tags: - API - Client - Method - Reference - Service Workers - Service worker API - ServiceWorker - postMessage translation_of: Web/API/Client/postMessage ---
{{APIRef("Service Worker API")}}
postMessage() は {{domxref("Client")}} インターフェイスのメソッドで、サービスワーカーがクライアント ({{domxref("Window")}}, {{domxref("Worker")}}, {{domxref("SharedWorker")}}) にメッセージを送信することができます。 メッセージは、 {{domxref("ServiceWorkerContainer", "navigator.serviceWorker")}} の "message" イベントで受信されます。
client.postMessage(message[, transfer]);
client.postMessage(message[, { transfer }]);
messagetransfer {{optional_inline}}undefined。
サービスワーカーからクライアントへのメッセージの送信
addEventListener('fetch', event => {
event.waitUntil(async function() {
// クライアントにアクセスできない場合は、早期に終了します。
// 例えば、クロスオリジンの場合。
if (!event.clientId) return;
// クライアントを取得します。
const client = await clients.get(event.clientId);
// クライアントを取得できない場合は、早期に終了します。
// 例えば、閉じている場合。
if (!client) return;
// クライアントにメッセージを送信します。
client.postMessage({
msg: "私はあなたからフェッチされましたよ!",
url: event.request.url
});
}());
});
そのメッセージの受け取り
navigator.serviceWorker.addEventListener('message', event => {
console.log(event.data.msg, event.data.url);
});
| 仕様書 | 状態 | 備考 |
|---|---|---|
| {{SpecName('Service Workers', '#dom-client-postmessage-message-options', 'postMessage()')}} | {{Spec2('Service Workers')}} | 初回定義 |
{{Compat("api.Client.postMessage")}}