¿Cuándo establecerías location
una cadena URL en lugar de la configuración location.href
?
location = "http://www.stackoverflow.com";
vs
location.href = "http://www.stackoverflow.com";
javascript
quimérico
fuente
fuente
location.href
correo falla debido a la misma política de origen: javascript.info/tutorial/…replace
yassign
: stackoverflow.com/q/1865837/632951 , stackoverflow.com/q/7703689/632951 , stackoverflow.com/q/10302905/632951Respuestas:
Puede configurar
location
directamente porque es un poco más corto. Si está tratando de ser conciso, generalmente también puede omitirlowindow.
.URL asignaciones a la vez
location.href
ylocation
se definen para el trabajo en JavaScript 1.0, de vuelta en Netscape 2, y se han implementado en todos los navegadores desde entonces. Así que elija y use lo que encuentre más claro.fuente
Incluso si ambos funcionan, usaría el último.
location
es un objeto, y asignar una cadena a un objeto no es un buen augurio para la legibilidad o el mantenimiento.fuente
window.location
: no requiereSAME ORIGIN
.location = 'http://www.example.com'
parece súper legible. Aunque, como un caso especial. Eso es compatible con versiones anteriores y seguirá siendo compatible en el futuro previsible.Como ya se ha dicho,
.location
es un objetoPero esa persona sugirió usar cualquiera.Pero, será mejor que uses la.href
versión.Los objetos tienen propiedades predeterminadas que, si no se especifica nada más, se asumen. En el caso dellocation
objeto, tiene una propiedad llamada.href
. Y al no especificar CUALQUIER propiedad durante la asignación, asumirá "href" de forma predeterminada.Esto está muy bien hasta que cambie una versión posterior del modelo de objeto y ya no haya una propiedad predeterminada o la propiedad predeterminada cambie. Entonces su programa se rompe inesperadamente.
Si quiere decirhref
, debe especificarhref
.fuente
location
funciona porque la propiedad se definió para tener este comportamiento de asignación especial en JavaScript 1.0 y en todos los navegadores desde que lo implementó. HTML5 ahora lo requiere. Entonces, aunque puede ser más bonito o más consistente asignarlo.href
, no hay una ventaja de compatibilidad hacia atrás o hacia adelante para hacerlo.window.location = url
es más bonitalocation = url
es más lindoHace un par de años,
location
no funcionó para mí en IE y lolocation.href
hizo (y ambos funcionaron en otros navegadores). Desde entonces, siempre lo he usadolocation.href
y nunca más tuve problemas. No recuerdo qué versión de IE era esa.fuente
strict mode
Chrome arrojará una excepción si intentas asignar directamentelocation
también, así que siempre usolocation.href
Solo para aclarar, no se puede hacer
location.split('#')
,location
es un objeto, no una cadena. Pero puedes hacerlolocation.href.split('#');
porquelocation.href
es una cadena.fuente
Sin embargo, hay una diferencia a tener en cuenta.
Supongamos que desea crear alguna URL utilizando la URL actual. De hecho, el siguiente código lo redireccionará, porque no está llamando
String.replace
peroLocation.replace
:Los siguientes códigos funcionan:
fuente
Con TypeScript, use
window.location.href
comowindow.location
es técnicamente un objeto que contiene:La configuración
window.location
producirá un error de tipo, mientras quewindow.location.href
es de tipo cadena.Fuente
fuente