2

子iframeからの「#」が後に続く追加のテキストでparent.locationを設定することにより、クロスドメイン通信を解決する「フラグメントIDメッセージング」と呼ばれるソリューションがあります。これは機能します。ただし、親自体が別のページにiframeとして埋め込まれている場合、parent.location設定はブラウザによって拒否されているようです...これは本当ですか?はいの場合、回避策はありますか?

ありがとう!

4

2 に答える 2

4

postMessage API をサポートする最新のブラウザーでは、この種のフレーム内通信をブロックするセキュリティが強化されています。このサポートがないブラウザーでは、使用している手法で問題ありません。これに対する唯一の例外は Safari 3.2 で、HTML 5 の postMessage API をサポートしておらず、特定の状況では parent.location を設定できません。

もう 1 つの落とし穴は、IE8 が postMessage API を実装している一方で、他のすべてのブラウザー (FF3+、Chrome、Safari 4+、Opera 9.64+) とは (ある程度予想通り) 異なる方法で実装していることです。IE8 では、ポップアップとそのオープナーの間の postMessage 通信は許可されていません。つまり、IE8 用に追加の iframe を使用する必要がありますが、これは他のブラウザーには必要ありません。

最終的に、リモート ドメインでページとポップアップ ウィンドウ間の通信を実装するには、まともな最新のブラウザー用に 1 つのブランチ、古いブラウザー用に 1 つ、IE8、IE7、および IE6 用にそれぞれ1 つのブランチが必要になります。ありがとうマイクロソフト...

祝你好運:)

于 2009-07-20T09:31:11.763 に答える
1

問題が発生しているブラウザと、表示される正確なエラー メッセージは何ですか?

一般に、FIM は、説明したシナリオでも正しく機能するはずであり、多くの主要な Web サイトで使用されています。

FIM は HTML5 postMessage API (IE8、FF3、Chrome、Opera 10 でサポート) が利用できない場合にのみ使用してください。postMessage はより安全で信頼性が高いためです。

于 2009-07-20T03:40:41.723 に答える