2010-06-28 16 views
5

Estoy trabajando en un entorno enmarcado e intentando saber si el marco en el que se ejecuta algún código JavaScript es el marco superior (el que contiene el resto).¿Cómo saber si el marco actual es padre?

Hasta ahora yo estaba tratando de comprobarlo con

window.parent != null 

pero siempre devuelve false, como en este ejemplo sencillo.

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

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

¿Hay alguna manera de hacerlo? No tengo que ser portátil, ahora mismo estoy buscando la solución IE6.

Respuesta

7

me encontré con este pdf a ser muy útil: http://seclab.stanford.edu/websec/framebusting/framebust.pdf

En pocas palabras, si esto es demasiado tiempo para leer, esto es lo que en última instancia proponen:

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

se pueden encontrar muchos otros medios hacer esto en este pdf y cada uno significa 'pro y contras. Obviamente, en navegadores sin JavaScript, esta solución podría ser dolorosa;)

1

Puede verificar si top.frames.length == 0.

5
self === top 

debe devolver verdadero si se ejecuta en el conjunto de marcos superior, de lo contrario falso.

Cuestiones relacionadas