2009-04-14 18 views
2

別のドメインのiframe内からトップから情報を取得する方法はありますか?誰かが自分の広告がポルノのようなものの隣にはないことを検証してくれと任せていますが、広告は常にサイト運営者サイトのiframeの内側にあります。私は、iframe内にtwitter.comを入れたときにiframe内からトップhrefとinnerHTMLを取得する

は興味深いことに、彼らは技術をiFrame無効化がオンになっている - そうのように:私を打つ何

<script type="text/javascript"> 
//<![CDATA[ 
    if (window.top !== window.self) { setTimeout(function(){document.body.innerHTML='';},1);window.self.onload=function(evt){document.body.innerHTML='';};} 
//]]> 
</script> 

は異なるドメインとして、彼らはまだ能力を持っている、ということですwindow.topを取得する。しかし、私はトップウィンドウのURLを取得するにはwindow.top.locationまたはwindow.top.hrefするために、この機能を拡張しようとすると、私は

uncaught exception: [Exception... "Component returned failure code: 0x8007000e (NS_ERROR_OUT_OF_MEMORY) [nsIDOMNSHTMLDocument.write]" nsresult: "0x8007000e (NS_ERROR_OUT_OF_MEMORY)" location: "JS frame :: http://tester.tester.com/iframe3.html :: <TOP_LEVEL> :: line 9" data: no] 
http://tester.tester.com/iframe3.html 
Line 9 

を得る本当に誤って報告されているだけでパーミッションエラーでありますGecko(私は思う)。

これについてのご意見はありますか? iframeは実際にデータを取得していないため、データ自体を取得できないため、同等のステートメントが利用可能ですか?

私が得ることができる情報は何もありませんので、部分的な答えを入れてください。ありがとう。

答えて

3

iframeは実際にデータを取得しないため、データ自体を取得できないため、同等のステートメントが利用可能ですか?

これは、クロスドメインフレーム/ iframe/parent/openerの 'window'オブジェクトをいつでも得ることができる古くからのJavaScriptです。しかし、明らかなセキュリティ上の理由から、オブジェクトのほとんどのメンバーにアクセスすることはできません。ブラウザのバグのためにこれらの制限を回避する方法は時々ありましたが、あなたが頼りにすることはできません。

未知のウィンドウオブジェクトで便利に行うことができるのは、他の既知のウィンドウオブジェクト(現在のオブジェクトなど)と同じオブジェクトであるかどうかをチェックすることです。

未知のウィンドウが少なくとも自分のドメイン内にあるかどうかをテストする場合は、try...catchブロック内のotherwindow.locationにアクセスすることができます。

トップからの情報を別のドメインのiframeから取得する方法はありますか?

ありませんが、あなたは> <のiframeを含め、どのページを参照してHTTPサーバ側で「リファラー」ヘッダーを記録することができます。しかし、確かにあなたの広告ネットワークはあなたのためにこれをやっているはずです。

(window.top == window.self!)

おさるの場合は、 window.selfはwindowと同じものです。なぜあなたは長いバージョンを使うのか分かりません。このテストのための最短のイディオムは次のとおりです。あなたが「トップ」や「自己」と呼ばれる任意の他の変数を定義していない限り、働く

if (top!==self) 

+0

残念ながら、私たちが提供する広告は既にiframe内にあるので、私たちはiframeを2層下にしています。他のすべては非常に有用です。ありがとう! –

+0

恥...中間のフレームを実行する広告ネットワークからの報告はありませんか?私は確かに私の印象がどこに行っていたか知りたいと思うでしょう... – bobince

+0

私はまだ発見したリアルタイムの報告はありません。相互作用の瞬間にデータが必要であることを覚えておいてください。そうしないと、悪意のあるサイトではフラグを立てないページが表示されます。バッチメソッドでこれを行うのは最初です。 –

関連する問題