Channel Messaging API の MessagePort インターフェースは、MessageChannel の 2 つのポートの一方を表し、片方のポートから送信されるメッセージをもう片方のポートで受信待機できます。
注: この機能は Web Worker 内で利用可能です
親である EventTarget からのメソッドを継承します。
親である EventTarget からのイベントハンドラーを継承します。
Iframe が読み込まれると、MessageChannel.port1 に onmessage ハンドラーを登録し、メッセージと共に window.postMessage を使用して IFrame に MessageChannel.port2 を送信します。
IFrame からメッセージが返却されると。onMessage 関数でメッセージをパラグラフに出力します。
var channel = new MessageChannel(); var output = document.querySelector('.output'); var iframe = document.querySelector('iframe'); // Wait for the iframe to load iframe.addEventListener("load", onLoad); function onLoad() { // Listen for messages on port1 channel.port1.onmessage = onMessage; // Transfer port2 to the iframe iframe.contentWindow.postMessage('Hello from the main page!', '*', [channel.port2]); } // Handle messages received on port1 function onMessage(e) { output.innerHTML = e.data; }
完全に動作する例は、Github 上の channel messaging basic demo を参照してください(実際のデモも実行できます)。
表示内容: |
表示内容: |