DOM

インターフェイス

MessageChannel インターフェイス

  編集:2022.04.03 by T.A.

MS

Channel Messaging API の MessageChannel インターフェースは、新しいメッセージ チャンネルを作成し、2 つの MessagePort プロパティを通して、その間でデータを送信できます。

注: この機能は Web Worker 内で利用可能です

コンストラクター
new MessageChannel()
2 つの新しい MessagePort オブジェクトを持つ 新しい MessageChannel オブジェクトを返します。
プロパティ
MessageChannel.port1 読取専用
チャンネルの port1 を返します。
MessageChannel.port2 読取専用
チャンネルの port2 を返します。
次のコードブロックでは、MessageChannel.MessageChannel コンストラクタを使用して作成された新しいチャンネルを知ることができます。<iframe> が読み込まれると、MessagePort.postMessage にメッセージを添えて MessageChannel.port2 を <iframe> へ渡します。すると、handleMessage ハンドラが <iframe> から返送されたメッセージに(MessagePort.onmessage を使用して)返答し、これを段落に挿入します。
var channel = new MessageChannel();
var para = document.querySelector('p');

var ifr = document.querySelector('iframe');
var otherWindow = ifr.contentWindow;

ifr.addEventListener("load", iframeLoaded, false);

function iframeLoaded() {
  otherWindow.postMessage('Hello from the main page!', '*', [channel.port2]);
}

channel.port1.onmessage = handleMessage;
function handleMessage(e) {
  para.innerHTML = e.data;
}

完全に動作する例は、Github 上の channel messaging basic demo を参照してください(実際のデモも実行できます)。


テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: