質問

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

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

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

  

iemoblogのコメント:

     

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

これに関するドキュメントを見つけることができないようです-誰でもこれを確認するのを助けることができますか、さらに良い-ページが「フレーム化」されているかどうかを検出する方法を提案できますか?

役に立ちましたか?

解決 2

IEモバイルブログ(チャールズモリス-IEモバイルチームのプログラムマネージャー、彼自身の投稿による)

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

  

prcによると

     

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

     

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

     

iemoblogが言った

     

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

     

2007年12月20日12:12   PM

他のヒント

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

できることは、 window window.top と比較しようとすることです。可能な結果は次のとおりです。 1.同じです->あなたはページの一番上のウィンドウです 2.それらは同じではありません->あなたはページの一番上のウィンドウではありません。あなたと同じドメインに、ウィンドウをフレームまたは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";
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top