2010-07-26 48 views
78

¿Alguien puede decirme la diferencia entre window.location.href y top.location.href?Diferencia entre window.location.href y top.location.href

Y también dónde usar cuál.

¿Y cuál será mejor al redirigir después de una llamada ajax en mvc?

+0

olvidé mencionar que tuve que redireccionar a una nueva URL en .NET MVC ... cuando utilicé top.location.href funcionó, mientras que window.location no ... ¿puede usted también decir la razón por la que ?? ?? – Egalitarian

+0

lo tengo ... gracias .... – Egalitarian

Respuesta

107

window.location.href devuelve la ubicación de la página actual.

top.location.href (que es un alias de window.top.location.href) devuelve la ubicación de la ventana superior en la jerarquía de la ventana. Si una ventana no tiene padre, top es una referencia a sí mismo (en otras palabras, window === window.top).

top es útil tanto cuando se trata de marcos como cuando se trata de ventanas que han sido abiertas por otras páginas. Por ejemplo, si usted tiene una página llamada test.html con la siguiente secuencia de comandos:

var newWin=window.open('about:blank','test','width=100,height=100'); 
newWin.document.write('<script>alert(top.location.href);</script>'); 

La alerta resultante tendrá la ruta completa a Test.html – no about: blank, que es lo que window.location.href volvería.

Para responder a su pregunta acerca de la redirección, vaya con window.location.assign(url);

+3

¿Es correcto llamar 'top.location.href' un * alias * de' window.top.location.href'? Pensé que una variable llamada "global" es realmente una * taquigrafía para una propiedad * de 'ventana', mientras que * alias * implica que es una variable independiente que apunta al mismo lugar. –

+0

muy buena explicación –

8

top se refiere al objeto ventana que contiene todos los marcos actuales (padre del resto de las ventanas). window es el actual window.

http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific

por lo top.location.href puede contener el vínculo "maestro" que contiene todos los fotogramas, mientras que window.location.href solo contiene el enlace "actual" de la página.

5

El primero añade un elemento a la historia en que puede (o debe ser capaz de) haga clic en "Volver" y volver a la página actual.

El segundo reemplaza el elemento del historial actual para que no pueda volver a él.

Ver window.location:

  • assign(url): Cargue el documento en la URL proporcionada.

  • replace(url): Reemplace el documento actual con el que se encuentra en la URL proporcionada. La diferencia con el método assign() es que después de usar replace(), la página actual no se guardará en el historial de la sesión, lo que significa que el usuario no podrá usar el botón Atrás para navegar hacia ella.

window.location.href = url; 

se ve favorecida por:

window.location = url; 
+0

Para la cuestión de CORS no funciona ... ¿cómo solucionar esto? – Prateek

23

top objeto tiene más sentido dentro de los marcos. Dentro de un marco, window se refiere a la ventana del marco actual, mientras que top se refiere a la ventana más externa que contiene los marcos. Entonces:

window.location.href = 'somepage.html'; significa cargando somepage.html dentro del marco.

top.location.href = 'somepage.html'; significa cargando somepage.html en la ventana principal del navegador.

Otros dos objetos interesantes son self y parent.