¿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?
                    
                        javascript
                                asp.net-mvc
                                
                    
                    
                        Igualitario
fuente
                
                fuente

Respuestas:
window.location.hrefdevuelve 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,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 llamadatest.htmlcon el siguiente 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);fuente
top.location.hrefun alias dewindow.top.location.href? Pensé que la llamada variable "global" es en realidad una abreviatura de una propiedad dewindowmientras 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, sewindowrefiere a la ventana del marco actual, mientras que setoprefiere a la ventana más externa que contiene los marcos. Entonces:window.location.href = 'somepage.html';significa cargarsomepage.htmldentro del marco.top.location.href = 'somepage.html';significa cargarsomepage.htmlen la ventana principal del navegador.Otros dos objetos interesantes son
selfyparent.fuente
topse refiere al objeto de ventana que contiene todos los marcos actuales (padre del resto de las ventanas).windowes la corrientewindow.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 quewindow.location.hrefsolo 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