2011-02-04 9 views
6

Muszę wiedzieć, czy element dokumentu jest węzłem ROOT strony. Na przykład:Sprawdź, czy dokument jest węzłem ROOT

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

JavaScript, który jest wykonywany w iframe 1 lub 2, powinien wiedzieć, czy węzeł dokumentu jest węzłem głównym.

Mam nadzieję, że możesz mi pomóc.

Odpowiedz

11

Powinieneś być w stanie to zrobić z top:

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

+1, ale 'top.document === okno .document' jest wystarczające, 'window.top' jest po prostu wolniejszym sposobem robienia' top'a –

+0

@Martin True, ale wolę być jednoznaczny. Mogę sobie wyobrazić sytuację, w której nazwałbym zmienną 'top'. – lonesomeday

+0

Cóż, możesz spróbować, ale w większości przeglądarek, jeśli spróbujesz przypisać wartość do "góry", albo zostanie zignorowana, albo wyśle ​​błąd. Poza tym okno to po prostu pseudo obiekt, który wskazuje na globalną przestrzeń nazw tej klatki, więc będąc jawnym, jak ją nazywasz, po prostu przebywa długą drogę, przypominając zwiedzanie zamiast korzystania z autostrady. –

0

Podejrzewam, że biorąc pod uwagę zawartość różnych dokumentów, wszystkie będą zgłaszać z powrotem jako węzeł główny. Być może lepiej sprawdzić, czy document.parent ma wartość null, czy też nie.

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

Zrób funkcję w swojej górnej dokumentu, który zwraca to Rootnode, a następnie wywołać tę funkcję z dokumentów iframe za pomocą window.top referencyjny:

w górę dokumentu:

function getRootNode() 
{ 
//returns the rootNode 
} 

I n dokumenty iframe:

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

wypróbować to:

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

// gdzie currentnode jest węzeł której możesz wybrać