2015-01-01 13 views
5

パブリッシャーページでADクリエイティブで配信されるJavaScriptピクセルを作成しています。この広告はサイト運営者サイトのiframe(クロスレベルの場合もあります)に含まれます。広告主は、すべてのページが彼/彼女のADたちはホストページを知っている必要があり、その後務めなっているものに知りたいので、もし出版社のページには、この複数レベルの相互ドメインiframeからトップレベルウィンドウのURLを特定する

ホスト(出版社)サイト

<html> 
    <iframe src="http://domain1.com" name="first_level_iframe"> 
     <iframe src="http://domain2.com" name="second_level_iframe"> 
      <!--The script I want to write will be hosted here--> 
     </iframe> 
    </iframe> 
</html> 

のように見えますurl。

たように、我々はこの

var url = (window.location != window.parent.location) ? document.referrer: document.location; 

ようdocument.referrer使用して親ページのURLを取得することができますが、それだけで一つだけレベルアップしているドメインのために働くhereを述べました。私たちは "domain1.com" iframeを一切支配していないので、一番上のレベルまで到達することはできません。 これは人々が長い間解決しようとしている1つの問題であり、まったく同じ質問をしているので、既に多くの質問があります。 しかし、これはarticleのために再度尋ねています。トップレベルのウィンドウURLを検出できる特許取得済みのソリューションがあると主張しています。 解決の鍵は (*)の広告をホストしていたトップフレームのアドレスを読み取る能力ました:ここに命の恩人はのAdSafeで開発された技術だったのブログ

からの抜粋です。 の広告が「クリーンパブリッシャー」のサイトに表示されるはずだったので、ポルノを検出していました。ポルノのウェブサイトのフレーム内に と表示されていました。 HGTVを例として、 と考えてみましょう。しかし、そのような「きれいな出版社」の実際の例ではありません。

トップレベルのウィンドウのURLを検出する方法はありますか?

同様の質問: Top window's URL form inside of multiple nested cross-domain iFrames

答えて

1

私はChromeとOperaの両方でドメインを取得するためのソリューションを用意していますが(複数のネストされたクロスドメインiframeで)、残念ながら他のブラウザでは不可能です。

'window.location.ancestorOrigins'プロパティを使用できます。

このコードスニペットは、ブラウザに最も近いページURLを取得するために使用します。https://gist.github.com/ocundale/281f98a36a05c183ff3f.js

1

あなたが同じドメイン上にある場合、あなたは簡単な答えだ

window.top.location.href 

を使用して、上のフレームにアクセスすることができます。

ネストされたiframeがトップドメインと異なるドメインにある場合、同じドメインポリシーの問題が発生します。これは、セキュリティ上の理由から、異なるドメインでホストされているフレームが互いに通信できないという問題です。

ネストされたフレームの作成を制御する場合、ネストされたフレームを指すクエリ文字列パラメータを渡すことを回避する方法があります。

もう1つの方法は、フレーム間の通信にHTML5 postMesssageを使用することですが、もう一度、両方のドメインを制御する必要があります。

希望に役立ちます。

関連する問題