IE Mobileのiframe内のスクリプトから親のDOMにアクセスする
-
05-07-2019 - |
質問
フレーム化されたウィンドウがあります(現在は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";
}