ExtendableMessageEvent

Service Worker APIExtendableMessageEvent インターフェイスは、(別のコンテキストからのメッセージを ServiceWorkerGlobalScope で受信した時に)サービスワーカーで発生する message イベントのイベントオブジェクトを表し、このようなイベントの存続期間を延長します。

このインターフェイスは、ExtendableEvent インターフェイスを継承しています。

コンストラクター

ExtendableMessageEvent()
新しい ExtendableMessageEvent オブジェクトのインスタンスを作成します。

プロパティ

親の ExtendableEvent からプロパティを継承します。

ExtendableMessageEvent.data 読取専用
イベントのデータを返します。 任意のデータ型を使用できます。
ExtendableMessageEvent.origin 読取専用
メッセージを送信した Client のオリジンを返します。
ExtendableMessageEvent.lastEventId 読取専用
サーバー送信イベント(server-sent events)で、イベントソースの最後のイベント ID を表します。 これは空の文字列です。
ExtendableMessageEvent.source 読取専用
メッセージを送信した Client オブジェクトへの参照を返します。
ExtendableMessageEvent.ports 読取専用
関連するメッセージチャンネルのポートを表す MessagePort オブジェクトを含む配列を返します。

メソッド

親の ExtendableEvent からメソッドを継承します。

以下の例では、ページが ServiceWorkerRegistration.active を介して ServiceWorker オブジェクトへのハンドルを取得し、その postMessage() 関数を呼び出します。

// 制御されているページ内
if (navigator.serviceWorker) {

  navigator.serviceWorker.register('service-worker.js');

  navigator.serviceWorker.addEventListener('message', event => {
    // event は MessageEvent オブジェクトです
    console.log(`The service worker sent me a message: ${event.data}`);
  });

  navigator.serviceWorker.ready.then( registration => {
    registration.active.postMessage("Hi service worker");
  });

}

次のように、サービスワーカーは、message イベントをリッスンしてメッセージを受信できます。

// サービスワーカー内
addEventListener('message', event => {
  // event は ExtendableMessageEvent オブジェクトです
  console.log(`The client sent me a message: ${event.data}`);

  event.source.postMessage("Hi client");
});

仕様

仕様 状態 コメント
Service Workers
ExtendableMessageEvent の定義
草案 初期定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung Internet
ExtendableMessageEvent
実験的
Chrome 完全対応 ありEdge 完全対応 ≤18Firefox 完全対応 45
補足
完全対応 45
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 ありFirefox Android 完全対応 45Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 あり
ExtendableMessageEvent() constructor
実験的
Chrome ? Edge ? Firefox 完全対応 45
補足
完全対応 45
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android ? Firefox Android 完全対応 45Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
data
実験的
Chrome 完全対応 51Edge 完全対応 ≤79Firefox 完全対応 45
補足
完全対応 45
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android 完全対応 51Firefox Android 完全対応 45Opera Android ? Safari iOS 未対応 なしSamsung Internet Android 完全対応 5.0
lastEventId
実験的
Chrome ? Edge 完全対応 17Firefox 完全対応 45
補足
完全対応 45
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android ? Firefox Android 完全対応 45Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
origin
実験的
Chrome ? Edge ? Firefox 未対応 なしIE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android ? Firefox Android 未対応 なしOpera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
ports
実験的
Chrome ? Edge ? Firefox 完全対応 45
補足
完全対応 45
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android ? Firefox Android 完全対応 45Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?
source
実験的
Chrome ? Edge ? Firefox 完全対応 45
補足
完全対応 45
補足
補足 Extended Support Releases (ESR) before Firefox 78 ESR do not support service workers and the Push API.
IE 未対応 なしOpera ? Safari 未対応 なしWebView Android 未対応 なしChrome Android ? Firefox Android 完全対応 45Opera Android ? Safari iOS 未対応 なしSamsung Internet Android ?

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
実験的。動作が変更される可能性があります。
実験的。動作が変更される可能性があります。
実装ノートを参照してください。
実装ノートを参照してください。

関連情報