1

フレーム付きのウィンドウがあります(現在はiframeですが、フレームの可能性があります)-これを制御することはできません。

コンテンツがiframe(またはフレーム)内にあるかどうかを検出したいと思います。

現在のドキュメントの場所を一番上のオブジェクトが保持している場所と比較したかったのですが、同じオブジェクトのようです(top === window)。
広範囲にわたるグーグルの後、私はこのIEMobileブログエントリに到達し、コメントの1つに次の回答があります。

iemoblogは言った:

いいえ、IEMobileのiframeのスクリプトから親のDOMのどの部分にもアクセスできません。
2007年12月20日12:12PM

これに関するドキュメントが見つからないようです-誰かがこれを確認するのを手伝ってくれるか、それ以上に良いかもしれません-ページが「フレーム化」されているかどうかを検出する方法を提案しますか?

4

2 に答える 2

2

IE Mobile ブログ(IE Mobile チームのプログラム マネージャーである Charles Morris による投稿) に残されたコメントを見つけた後、どこにもたどり着けなかったので、この回答を追加し、次のように述べる必要があります。

設計どおり(または少なくともバグ)

prc は次のように述べています。

iframe サポートについて: iframe を作成できますが、フレームの「外を見る」ことができません。「トップ」と「親」は両方とも iframe 自体のみを参照しているようであり、最上位の祖先または直接の祖先ではありません。iframe 内から囲んでいるドキュメントの javascript 変数を参照する方法はありますか?

2007 年 12 月 19 日 午後 9 時 29 分

iemoblog さんのコメント:

いいえ、IE Mobile の iframe 内のスクリプトから親の DOM のどの部分にもアクセスできません。

2007 年 12 月 20 日 午後 12 時 12 分

于 2009-12-08T14:22:17.797 に答える
2

主な問題は、フレームがコンテナーとは異なるドメインからのものである場合、JavaScript がサンドボックス化され、他のフレーム/コンテナーにアクセスできないことです。

あなたができることは比較windowを試みることwindow.topであり、考えられる結果は次のとおりです。あなたと同じドメインに、ウィンドウをフレームまたはiframeとして保持するコンテナページがあります。3. セキュリティ例外がスローされます -> あなたはページのトップ ウィンドウではありませんが、トップ ウィンドウは別のドメインのものであり、アクセスできません。

多分このようなもの:

try {
  if (window == window.top)
    return "I'm parent";
  else
    return "I'm a child of " + window.top.location;
} catch (e) {
  return "I'm a child of something from another domain";
}
于 2009-03-08T20:07:08.430 に答える