He estado lidiando con un problema de Javascript de perdición de mi existencia que implica el seguimiento cuando un usuario hace clic en un enlace (en caso de que tenga curiosidad, aquí está: Why does using target="_blank" cause Javascript to fail?).Desventajas de onMousedown vs. onClick?
He descubierto que puedo resolver el problema rastreando un evento onMousedown en lugar de un evento onClick.
Tengo curiosidad acerca de los inconvenientes de este enfoque. Los que yo puedo pensar:
- Si un usuario hace clic sobre un enlace y luego se trasladó el ratón fuera del enlace antes de soltarlo, entonces el evento se registró a pesar de que el usuario no había visitado el enlace
- Si un usuario utiliza la tecla tAB para mover el foco del navegador para el enlace y luego pulsa enter, el clic no se registraría
Ninguno de estos son comunes, así que no estoy terriblemente preocupado por ellos.
¿Hay algún otro inconveniente que me falta?
Estoy de acuerdo con tu post, pero molesta que la página de búsqueda de Google usa onmousedown en lugar de onclick para hacer un seguimiento de los clics, lo que sugiere que manejan estos problemas o al menos consideran las mejores prácticas de onmousedown. ¿Alguna idea? – Dunc
No sé exactamente cómo google rastrea los clics, pero estos son algunos puntos que se me ocurren al usarlos en onmousedown: les interesa el porcentaje agregado de% de edades; algunos menos o más no importan. Con cualquiera de onclick/onmousedown, no hay una manera confiable de saber si el usuario ha seguido un enlace o no (usando onclick puede faltar clic derecho + abrir en una nueva pestaña, usar el mousedown puede hacer que cada clic derecho sea registrado como un enlace sigue). Sin embargo, el clic derecho podría significar que el usuario está de alguna manera interesado en el enlace. – Raze
Además, el evento mousedown da más tiempo para enviar datos a Google antes de que se siga el enlace (la pequeña diferencia de tiempo después de presionar el botón del mouse y antes de soltarlo), suficiente para que se envíe una solicitud al servidor de Google. No estoy seguro si onclick dejará suficiente tiempo para esto. La opción alternativa, que Yahoo hace, es primero llevarlo a su servidor, y luego redirigirlo a su URL de interés. – Raze