7

したがって、同じドメインにないページに iFrame を含めると、ブラウザ ポリシーを介してその iframe の DOM にアクセスできないことはわかっていますが、iframe 内のページはあらゆる種類の親ドキュメントにアクセスできますか?

具体的には、この質問を条件とするアイデアが必要です。

  1. 埋め込まれたページが親ウィンドウではないことがわかる場合は、iframe に対応していないサイトを作成して、ページが iframe であることを検出した場合に「Go Away」ページに変更するか、それのみを作成することができます。 -iframe-able (インクルードのみを目的としたページのサーバー側スクリプトに似ています)。これにより、iframe ではないページに移動すると、「Go Away」ページが表示されます。

  2. iframe ページに、親ウィンドウにない特定の自由がある場合、親ウィンドウのスタイルシートを要求して、それをスタイルシートとして設定し、サイトを親ドキュメントとより統合することができます。(もちろん、スタイルシートを iframe サイトにもっと関連させることもできますが、これが行われることはわかっていますが、それは問題ではないと思います)。

誰か知ってる?

4

4 に答える 4

11

#1に関しては、はい、簡単なjavascriptを使用してフレームに入れられているかどうかを知ることができます:

<script type="text/javascript">
if (self != top)
{
  // Framed!
}
</script>

#2に関しては、「トップ」変数を使用して何ができるかわかりませんが、その場所を変更できることは知っています(したがって、サイトが別のサイトによってフレーム化されている場合、フレームの場所を変更できますトップフレーム - 基本的にユーザーをサイトに直接リダイレクトします)。

ただし、トップフレームに対して他に何ができるか、またはできないかはわかりません-他の誰かがそこでより多くの情報を提供できるかもしれません.

于 2009-10-02T13:25:46.277 に答える
4

フレームの検出に関するこのコーディングホラーの記事にも興味があるかもしれません。フレームに入れられたかどうかを検出できますが、「親」ページがそれに基づいて行動するのを防ぐために講じることができる対策もあります。記事の例:

フレームに入れられているかどうかを検出します。

if (parent.frames.length > 0) {
    top.location.replace(document.location);
}

フレームが検出してリダイレクトしないようにします。

   var prevent_bust = 0  
   window.onbeforeunload = function() { prevent_bust++ }  
   setInterval(function() {  
     if (prevent_bust > 0) {  
       prevent_bust -= 2  
       window.top.location = 'http://server-which-responds-with-204.com'  
     }  
   }, 1)  
于 2009-10-02T13:37:43.630 に答える
1

これは、次の JavaScript をページに埋め込むことで可能になります。

if(top.location.href != self.location){
//do redirection or display message
}

この Javascript をサイト テンプレートの一部として使用して、どのページも IFrame に表示されないようにすることができます。

于 2009-10-02T13:28:37.607 に答える
0

私は以前にこれを行いました、そしてそれはうまくいきました:

<script type="text/javascript">
if (window.parent != null)
{
  // Framed!
}
</script>
于 2009-10-02T13:33:00.840 に答える