2010-06-28 17 views
5

Ich arbeite in einer gerahmten Umgebung und versuche herauszufinden, ob der Frame, auf dem JavaScript ausgeführt wird, der oberste Frame ist (der, der den Rest enthält).Wie erkennt man, ob der aktuelle Frame übergeordnet ist?

bis jetzt ich versuche, es zu überprüfen, mit

window.parent != null 

aber es gibt immer false zurück, wie in diesem einfachen Beispiel.

<html> 
<head> 
    <script> 
    alert(parent == null); 
    </script> 
</head> 

<body> 
    <h1>OH YEAH!</h1> 
</body> 
</html> 

Gibt es eine Möglichkeit, dies zu tun? Ich muss nicht tragbar sein, jetzt suche ich nach der IE6-Lösung.

Antwort

7

ich dieses pdf gefunden sehr nützlich sein: http://seclab.stanford.edu/websec/framebusting/framebust.pdf

Kurz gesagt, wenn diese zu lang ist, zu lesen, ist es das, was sie letztendlich vorschlagen:

<style> 
    html { display :none; } 
</style> 
<script> 
if(self==top){ 
    document.documentElement.style.display = 'block'; 
}else{ 
top.location=self.location; 
} 
</script> 

Sie werden viele andere Mittel finden um dies in diesem PDF zu tun und jeder bedeutet "Pro und Contra. Offensichtlich kann diese Lösung in Browsern ohne JavaScript schmerzhaft sein;)

1

Sie können überprüfen, ob top.frames.length == 0.

5

sollte True zurückgeben, wenn es im obersten Frameset ausgeführt wird, andernfalls false.

Verwandte Themen