¿Cuál es la diferencia entre hacer clic en:window.location.href vs clic en un ancla
<a href />
vs
llamando window.location.href = ...
?
¿Cuál es la diferencia entre hacer clic en:window.location.href vs clic en un ancla
<a href />
vs
llamando window.location.href = ...
?
Siempre que sea posible, debe usar <a href="foo.html">
sobre window.location.href
, por una serie de muy buenas razones.
window.location
rompe todos estosCon el anclaje puede especificar la propiedad de destino, pero con window.location.href no puede. Generalmente, el delimitador se usa cuando un usuario desea redirigir el navegador a otra ubicación, window.location.href se usa cuando la redirección se realiza mediante javascript.
Bueno, eso es cierto, pero un poco engañoso. Usted elige el objetivo implícitamente en la versión de Javascript por el objeto al que llama el método. ** window **. location.href cambia la ventana actual, pero ** mytarget **. location.href cambiará otra ventana/fotograma (suponiendo que la variable fue declarada apropiadamente). –
Independientemente, no deberías usar el atributo de destino de todos modos. –
¿Y quién dijo eso? De todos modos, él pregunta por las diferencias y esta es una de ellas así que sigue votando, pero está bien. @dtsazza: tienes razón, pero él está hablando de window.location no algoElse.location – mck89
Además de las otras respuestas dadas, al hacer clic en un elemento <a>
con el atributo href
sapecified hará que el navegador para navegar a la dirección URL en el href
, independientemente de que JavaScript está activado o no.
No olvide que, al hacer clic en un hipervínculo (etiqueta de anclaje), se activará el controlador onclick
de ese elemento (si lo hay), mientras que la versión de Javascript no cambia y simplemente cambia la ubicación de la ventana.
Es posible invocar manualmente el controlador onclick desde Javascript si desea simular un clic, pero debe recordar hacerlo manualmente. Los fragmentos que publicó diferirían en este sentido, lo que podría ser la causa de las diferencias de comportamiento.
Configuración window.location.href = 'thepage.html'
es lo mismo que llamar:
window.open('thepage.html', '_self');
es decir, el objetivo está limitado a la misma ventana, ya que es donde está la propiedad de ubicación.Esto tiene el mismo efecto que hacer clic en un enlace sin un atributo de destino:
<a href="thepage.html">...</a>
Puede utilizar el método abierto en lugar de especificar un objetivo diferente, como una nueva ventana:
window.open('thepage.html', '_blank');
Esto tiene el mismo efecto como hacer clic en un enlace con ese objetivo:
<a href="thepage.html" target="_blank">...</a>
También puede utilizar el método abierto para abrir una nueva ventana. El valor de retorno es una referencia a la ventana, por lo que puede usarlo para establecer la ubicación de esa ventana en lugar de la ventana actual:
var w = window.open('about:blank', '_blank');
w.location.href = 'thepage.html';
document.referrer contiene una referencia en el servidor y el cliente para la url de la página que contenía el enlace en el que el usuario hizo clic para acceder a la nueva página, , los métodos de ubicación con guiones no.
Gran respuesta. También agregaría Mayús + clic para abrir en una nueva ventana y Ctrl + clic para abrir en una pestaña nueva. –