Web ページのサブフレームを使用する場合、作成者 (親) は通常、各サブフレームに「名前」を付け、mainWindow.dataFrame のような構文でフレームを参照できます。外部サイトからロードされたサブフレームがそのウィンドウの名前を、使用されている親とは異なる名前に変更するという事実まで追跡したブラウザー固有の問題に遭遇しました。これにより、Google Chrome では問題が発生しますが、Firefox では発生しません。
Firefox は、同じサブフレームの親の名前と子の名前を分けているようです。これにより、親の JavaScript は引き続き期待どおりに動作し、子の JavaScript は必要に応じて独自の名前を使用できます。
Chrome は別の考えを持っているようで、サブフレームの名前は 1 つしかありません。子がフレームの名前を変更すると、親は名前でアクセスできなくなります。別のコンテンツがサブフレームにロードされた後でも、「破損」は持続します。
他のブラウザが何をするかはまだ調査していません。
私は、この説明に関連するクロスドメイン セキュリティの問題があることを認識しています。オフサイトの子が読み込まれると、サブフレームのコンテンツにアクセスできなくなります。しかし、子に親の側からウィンドウの名前を変更させることは、潜在的なセキュリティの問題のようにも思えます。
これを解決するために、mainWindow.dataFrame 構文の使用をやめ、新しいデータをサブフレームにロードするときに固定インデックスを持つ frames[] 配列を使用する必要がありました - 見苦しいですが、実行可能です。これを回避するより良い方法はないという確認を探していると思います。そして、Firefox と Google のどちらが「正しい」かを知っておくとよいでしょう。私は Firefox に投票します。