13

「postMessage」は HTML5 API であり、IE8/9 を含むすべての主要なブラウザで利用できます。私がやろうとしているのは、ページからポップアップ ウィンドウを作成し、「postMessage」を使用してポップアップ ウィンドウと通信できるようにすることです。これは、IE8/9 を除くすべてのブラウザーで機能します。残念だった!

IE8/9 では、iframe 間の通信のみが許可されているように見えますが、2 つのウィンドウ間の通信は許可されていません。ウィンドウが同じ階層内にある場合でも同様です。

4

2 に答える 2

44

.postMessage()sを使用しない限り、IE9 では信頼性が低いことがわかりましたString

私の回避策は、反対側の関数を呼び出し.postMessage(JSON.stringify({object: 'data'}))て使用することでした。JSON.parse()onMessage()

于 2013-08-08T07:33:04.877 に答える
14

この.postMessage方法は機能します。IE8以降でどのように機能するかを理解する必要があります。残念ながら、IE8とIE9の場合、それはあなたが探していることをしません(IE10ではそうしますが)。IE8 / 9ではフレーム間でメッセージを送信できますが、別のウィンドウにメッセージを送信することはできません。

場合によっては機能する回避策があります。Martin Beebyは、この問題に関する彼のブログ投稿の最後の段落でそれについて説明しています:PostMessage PopupsandIE

これに関する詳細、およびその他のいくつかの注意事項については、MSDNのEricLawrenceの投稿を参照してください。

于 2012-12-12T00:39:29.700 に答える