MessageChannel: MessageChannel() コンストラクター
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
メモ: この機能はウェブワーカー内で利用可能です。
MessageChannel()
は MessageChannel
インターフェイスのコンストラクターで、2 つの新しい MessagePort
オブジェクトを持つ新しい MessageChannel
オブジェクトを返します。
構文
new MessageChannel()
引数
なし (undefined
)。
返値
新しい MessageChannel
オブジェクト。
例
次のコードブロックでは、MessageChannel()
コンストラクターを使用して作成された新しいチャンネルを知ることができます。
<iframe>
が読み込まれると、MessagePort.postMessage
にメッセージを添えて MessageChannel.port2
を <iframe>
へ渡します。
すると、handleMessage
ハンドラーが <iframe>
から返送されたメッセージに (MessagePort.message_event
を使用して) 返答し、これを段落に挿入します。
port1
は、いつメッセージが到着しているかどうかをチェックするために待ち受けされます。
const channel = new MessageChannel();
const para = document.querySelector("p");
const ifr = document.querySelector("iframe");
const 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 を参照してください (実際のデモも実行できます)。
仕様書
Specification |
---|
HTML Standard # dom-messagechannel-dev |
ブラウザーの互換性
BCD tables only load in the browser