¿Debo usar window.navigate o document.location en JavaScript?

177

¿Cuál es el método preferido para cambiar la ubicación de la página web actual usando JavaScript? He visto utilizar window.navigate y document.location. ¿Hay alguna diferencia en el comportamiento? ¿Hay diferencias en las implementaciones del navegador?

dthrasher
fuente

Respuestas:

220
window.location.href = 'URL';

es la implementación estándar para cambiar la ubicación de la ventana actual.

James Skidmore
fuente
22
¿Tiene una referencia para indicar que window.location.href es la implementación estándar? ¿Y ese estándar se aplica igualmente bien a todos los navegadores? Ciertamente parece estar bien informado y más de 15 votos (más la respuesta aceptada) ayudan a que sea más autoritario, aunque creo que sería mejor ver la documentación de los equipos de desarrollo del navegador para respaldar el reclamo.
Goyuix
66
@Goyuix, probablemente sea más preciso decir que window.location.hrefes la implementación completa, pero window.locationlogra lo mismo. Consulte docs.sun.com/source/816-6408-10/location.htm : "Si asigna una cadena a la locationpropiedad de un objeto, JavaScript crea un locationobjeto y asigna esa cadena a su hrefpropiedad".
James Skidmore
3
Parece que estos muchachos decidieron que es su preferencia personal: developer.mozilla.org/Talk:en/DOM/window.location . O vea el ejemplo en la parte inferior, solo usan, window.locationpero eso no indica necesariamente de ninguna manera: developer.mozilla.org/en/window.location .
James Skidmore
1
Actualmente estoy usando esto para el desarrollo de Android. Tengo problemas para redirigir la página desde JS en el navegador predeterminado de Android. Intenté window.location.href = 'URL';y también window.location.assign('URL');el método que está diseñado para volver a cargar una nueva página. Se puede encontrar más información w3schools.com/jsref/obj_location.asp
philipp
3
window.navigatees un método patentado, utilizado por Internet Explorer (estoy seguro de que si otros navegadores lo imitan por compatibilidad, Chrome no lo hace). document.locationo window.locationson objetos estándar (consulte las diversas especificaciones HTML / HTML5 / DOM). document.location = someURL(o window.location = someURL) probablemente sea compatible debido al código heredado. La forma correcta de hacerlo es document.location.href = someURL, o tal vez document.location.assign(someURL).
PhistucK
11

window.navigate no es compatible con algunos navegadores

En Java Script hay muchas formas de redireccionamiento, consulte el código y la explicación a continuación.

window.location.href = "http://krishna.developerstips.com/";
window.location = "http://developerstips.com/";
window.location.replace("http://developerstips.com/");
window.location.assign("http://work.developerstips.com/");

window.location.href carga la página del caché del navegador y no siempre envía la solicitud al servidor. Por lo tanto, si tiene una versión anterior de la página disponible en el caché, se redirigirá a allí en lugar de cargar una página nueva desde el servidor.

método window.location.assign () para la redirección si desea permitir que el usuario use el botón Atrás para volver al documento original.

método window.location.replace () si desea redirigir a una página nueva y no permite que el usuario navegue a la página original con el botón Atrás.

Srikrushna
fuente
7

document.locatio n es una propiedad de cadena de solo lectura (en desuso pero aún presente), reemplazada por document.url .

Kennebec
fuente
6

window.location También afecta al marco,

la mejor forma que encontré es:

parent.window.location.href

Y lo peor es:

parent.document.URL 

Hice una prueba masiva del navegador, y algunos IE raros con varios complementos quedan indefinidos con la segunda forma.

jolmos
fuente
Según esa lógica, ¿no sería mejor top.window.location.href todavía?
Orwellophile
6

window.locationafectará a su objetivo de navegador. document.location solo afectará a su navegador y frame / iframe.

Aldry Zhen
fuente
4

window.navigateNO es compatible con algunos navegadores, por lo que se debe evitar. Cualquiera de los otros métodos que usan la propiedad de ubicación es el enfoque más confiable y consistente

Troy Grosh
fuente
2

Me gustaría ir con window.location = "http://...";. He estado codificando JavaScript entre navegadores durante algunos años, y nunca he tenido problemas con este enfoque.

window.navigatey me window.location.hrefparece un poco extraño.

cllpse
fuente
13
window.location funciona, pero es técnicamente incorrecto porque "ubicación" es un objeto.
James Skidmore
16
Pero todo en JavaScript es un objeto :)
cllpse
1
Si bien casi todo es un objeto en JavaScript, la asignación de una cadena a un objeto generalmente no establece el valor en una de sus propiedades (como window.location o document.location hacen con su propiedad href), sino que reemplaza ese objeto con un cuerda. En este caso, se agregó una peculiaridad del navegador para ser compatible con las implementaciones existentes (extravagantes) y el contenido heredado (y no tan heredado).
PhistucK
1

Realmente no hay diferencia; Hay alrededor de 5 métodos diferentes para hacerlo. Sin embargo, los que veo con más frecuencia son document.locationy window.locationporque son compatibles con todos los principales navegadores. (Personalmente, nunca he visto que se window.navigateuse en el código de producción, ¿entonces quizás no tiene muy buen soporte?

Sasha Chedygov
fuente
document.location no funciona en todos los navegadores. window.location hace.
Philippe Leybaert
2
Firefox no es compatible con window.navigate
Andrew Harry
-5

Puedes mover tu página usando

window.location.href =Url;
Vishnu Gupta
fuente
3
Esto realmente no agrega más información que la aceptada, y multiplica la respuesta votada ...
Stuart Siegler
3
Incluso podría ir más allá y argumentar que simplemente ha plagiado la respuesta aceptada
Liam el