1

オンラインやこの Web サイトで他の投稿を読んだ後でも、postMessage の使用に問題があります。

var abc_iframe = document.createElement('iframe') を使用して生成される iframe があります。私の理解では、これにイベントリスナーをアタッチして、iframe 内からのメッセージをリッスンすることを想定しています。私が試してみました:

1. abc_iframe.addEventListener("message", function(e){ console.log(e.data); }, false);
2. document.frames['id_iframe'].addEventListener("message", function(e){ console.log(e.data); }, false); 
(id_iframe right here being the id of the iframe)
3. WinJS.Application.addEventListener("message", function(e){ console.log(e.data); }, false);

これらのどれも機能していません。を使用して iframe 内から postMessage を送信しています

1. parent.postMessage("message", "ms-appx://" + document.location.host);
2. window.parent.postMessage("message", "ms-appx://" + document.location.host);

iframe コンテンツは、(ローカルではなく) 別のドメインでホストされています。

4

1 に答える 1

1

iframe からメッセージを受信するには、iframe ではなく window オブジェクトにアタッチする必要があります。

window.addEventListener(function(e) {}));

すべてのウィンドウからのすべてのメッセージがこのイベント ハンドラーによって処理されるため、送信するメッセージには、メッセージを送信する iframe を親が識別できるようにする情報を含める必要があります。

また、addEventListener は一部のブラウザーでのみ機能することにも注意してください。古い IE バージョンは attachEvent を使用します。

于 2012-12-17T02:28:28.170 に答える