javascript - _blank - window.location.href jquery
window.location.href vs hacer clic en un ancla (6)
¿Cuál es la diferencia entre hacer clic en:
<a href />
contra
llamando a window.location.href = ...
?
Además de las otras respuestas dadas, al hacer clic en un elemento <a>
con el atributo href
sapecified, el navegador navegará a la URL en href
, independientemente de si JavaScript está habilitado o no.
Con el ancla puede especificar la propiedad de destino, pero con window.location.href no puede. Generalmente, el ancla se usa cuando un usuario desea redirigir el navegador a otra ubicación, window.location.href se usa cuando la redirección se realiza utilizando javascript.
Establecer 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 usar el método abierto en su lugar para especificar un objetivo diferente, como una nueva ventana:
window.open(''thepage.html'', ''_blank'');
Esto tiene el mismo efecto que hacer clic en un enlace con ese objetivo:
<a href="thepage.html" target="_blank">...</a>
También puede utilizar el método de abrir 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'';
No olvide que, además de las respuestas anteriores, hacer clic en un hipervínculo (etiqueta de anclaje) activará el controlador de clics de ese elemento (si existe), mientras que la versión de Javascript claramente no lo hace y solo 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 publicaste serían diferentes en este aspecto, lo que podría ser la causa de cualquier diferencia de comportamiento.
Siempre que sea posible, debe utilizar <a href="foo.html">
sobre window.location.href
, por una serie de muy buenas razones.
- Si tiene javascript desactivado, ninguno de los enlaces funcionará.
- Las arañas, como Google Bot, no interpretan javascript, por lo que no seguirán ninguno de sus enlaces.
- Rompe el internet No, en realidad, sin embargo, la World Wide Web está construida sobre la base de los vínculos detectables entre páginas. Ocultar estos enlaces con no estándar ... err, enlaces, va en contra de esa premisa.
- Es una mala experiencia para el usuario: un usuario espera que cuando pase el mouse sobre un enlace, tendrá acceso a cierta información:
- el destino que se muestra en la barra de estado (muy importante!)
- clic derecho -> copiar enlace ubicación
- clic medio -> abrir nueva pestaña
- etc
- El uso de
window.location
rompe todos estos
- ¡Es mucho más fácil!
document.referrer contiene una referencia en el servidor y el cliente a 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.