¿Alguien puede decirme la diferencia entre window.location.hrefy 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?
¿Alguien puede decirme la diferencia entre window.location.hrefy 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?
Respuestas:
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 más alta en la jerarquía de ventanas. Si una ventana no tiene padre, topes una referencia a sí misma (en otras palabras, window=== window.top).
topes ú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 llamada test.htmlcon el siguiente script:
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 a: en blanco, que es lo window.location.hrefque devolvería.
Para responder a su pregunta sobre la redirección, vaya con window.location.assign(url);
top.location.hrefun alias de window.top.location.href? Pensé que la llamada variable "global" es en realidad una abreviatura de una propiedad de windowmientras que alias implica que es una variable independiente que apunta al mismo lugar.
topel objeto tiene más sentido dentro de los marcos. Dentro de un marco, se windowrefiere a la ventana del marco actual, mientras que se toprefiere a la ventana más externa que contiene los marcos. Entonces:
window.location.href = 'somepage.html';significa cargar somepage.htmldentro del marco.
top.location.href = 'somepage.html';significa cargar somepage.htmlen la ventana principal del navegador.
topse refiere al objeto de ventana que contiene todos los marcos actuales (padre del resto de las ventanas). windowes la corriente window.
http://www.howtocreate.co.uk/tutorials/javascript/browserinspecific
por lo que top.location.hrefpuede contener el enlace de la página "maestra" que contiene todos los marcos, mientras que window.location.hrefsolo contiene el enlace de la página "actual".
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 el assign()método 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 hasta ella.
window.location.href = url;
se favorece sobre:
window.location = url;