¿Alguien puede decirme la 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?
javascript
asp.net-mvc
Igualitario
fuente
fuente
Respuestas:
window.location.href
devuelve la ubicación de la página actual.top.location.href
(que es un alias dewindow.top.location.href
) devuelve la ubicación de la ventana más alta en la jerarquía de ventanas. Si una ventana no tiene padre,top
es una referencia a sí misma (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 tiene una página llamadatest.html
con el siguiente script:La alerta resultante tendrá la ruta completa a test.html, no a: en blanco, que es lo
window.location.href
que devolvería.Para responder a su pregunta sobre la redirección, vaya con
window.location.assign(url);
fuente
top.location.href
un alias dewindow.top.location.href
? Pensé que la llamada variable "global" es en realidad una abreviatura de una propiedad dewindow
mientras que alias implica que es una variable independiente que apunta al mismo lugar.top
el objeto tiene más sentido dentro de los marcos. Dentro de un marco, sewindow
refiere a la ventana del marco actual, mientras que setop
refiere a la ventana más externa que contiene los marcos. Entonces:window.location.href = 'somepage.html';
significa cargarsomepage.html
dentro del marco.top.location.href = 'somepage.html';
significa cargarsomepage.html
en la ventana principal del navegador.Otros dos objetos interesantes son
self
yparent
.fuente
top
se refiere al objeto de ventana que contiene todos los marcos actuales (padre del resto de las ventanas).window
es la corrientewindow
.http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
por lo que
top.location.href
puede contener el enlace de la página "maestra" que contiene todos los marcos, mientras quewindow.location.href
solo contiene el enlace de la página "actual".fuente
El primero agrega un elemento a su historial en el que puede (o debería poder) hacer clic en "Atrás" 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 de la URL proporcionada. La diferencia con elassign()
método es que después de usarreplace()
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 hasta ella.se favorece sobre:
fuente