子iframeからの「#」が後に続く追加のテキストでparent.locationを設定することにより、クロスドメイン通信を解決する「フラグメントIDメッセージング」と呼ばれるソリューションがあります。これは機能します。ただし、親自体が別のページにiframeとして埋め込まれている場合、parent.location設定はブラウザによって拒否されているようです...これは本当ですか?はいの場合、回避策はありますか?
ありがとう!
子iframeからの「#」が後に続く追加のテキストでparent.locationを設定することにより、クロスドメイン通信を解決する「フラグメントIDメッセージング」と呼ばれるソリューションがあります。これは機能します。ただし、親自体が別のページにiframeとして埋め込まれている場合、parent.location設定はブラウザによって拒否されているようです...これは本当ですか?はいの場合、回避策はありますか?
ありがとう!
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 つのブランチが必要になります。ありがとうマイクロソフト...
祝你好運:)
問題が発生しているブラウザと、表示される正確なエラー メッセージは何ですか?
一般に、FIM は、説明したシナリオでも正しく機能するはずであり、多くの主要な Web サイトで使用されています。
FIM は HTML5 postMessage API (IE8、FF3、Chrome、Opera 10 でサポート) が利用できない場合にのみ使用してください。postMessage はより安全で信頼性が高いためです。