2011-02-04 16 views
6

文書要素がページのROOTノードであるかどうかを知る必要があります。たとえば:その文書ノードがルートノードである場合にはiframe 1または2に実行され文書がROOTノードであることを確認してください

<html> <-- ROOT Node 
    <head></head> 
    <body> 
     <iframe> 
     <html>...</html> <-- other document 
     </iframe> 
     <iframe> 
     <html>...</html> <-- other document 
     </iframe> 
    </body> 
</html> 

Javascriptが知っている必要があります。

あなたが私を助けてくれることを願っています。

答えて

11

あなたはtopでこれを行うことができる必要があります:

if (window.top.document === window.document) { 
    // we're in the outermost window 
} 
+0

1を選択しますノードであるが、 'top.document ===ウィンドウ

if(currentnode.parentNode == null) { alert("is root node") } 

// .document'で十分ですが、 'window.top'は' top'を実行するのに遅い方法です。 –

+0

@Martin Trueですが、私は明示的にすることを好みます。変数の名前を「トップ」とする状況を想像することができます。 – lonesomeday

+0

あなたは試してみることができますが、ほとんどのブラウザでは、 'top'に値を代入しようとすると、無視されるか、エラーがスローされます。また、ウィンドウは、そのフレームのグローバル名前空間を指し示す擬似オブジェクトに過ぎないので、明示的に呼んでいる限り、高速道路を使用する代わりに観光のようなものです。 –

0

私は、異なるドキュメントであると仮定すると、それらはすべてルートノードとして報告されると考えられます。 document.parentがヌルかどうかを確認する方が良いでしょう。

0
if (window == window.parent) { 
    alert("I'm not in a frame"); 
} 
0

その後、window.topを使用してiframeの文書からこの関数を呼び出し、それはルートノードです返し、あなたの一番上の文書で関数を作ります参照:

あなたの一番上の文書で:

function getRootNode() 
{ 
//returns the rootNode 
} 

I nは、あなたのiframeのドキュメント:

var rootNode = window.top.document.getRootNode(); 
0

はこれを試してみる:currentNodeのは、あなたが

関連する問題