5

Estoy tratando de realizar un seguimiento de los clics en un enlace externo (sin utilizar un "redireccionamiento").La captura de evento cuando se sigue un enlace

¿Cómo puedo capturar un evento cuando un usuario sigue un enlace, independientemente de si el usuario:

  1. izquierda hace clic en el enlace
  2. hace clic derecho sobre el enlace para abrirlo en una nueva ventana
  3. utilizar el teclado para activar el enlace
  4. ¿hay otras formas de activar un enlace?

evento onClick El sólo se aplica a la primera.

Si la configuración href="javascript:fireEventAndFollowLink()" el usuario no podrá abrir el enlace en una nueva ventana (2), por lo que esto no es una solución.

Respuesta

9

Un enlace puede ser activado de alguna manera (suponiendo que los navegadores modernos, ver nota al pie):

  1. click izquierdo
    • Para <a target="_blank"> o <a target="_new">, la página se cargará en una nueva pestaña .
    • Cuando el usuario presiona CTRL, la página se cargará en una nueva pestaña .
    • Cuando el usuario presiona SHIFT, la página se cargará en una nueva ventana .
    • Para otros target valores, el enlace se puede cargar en la pantalla actual o otro marco.
  2. Midde clic
    • La página se cargará en una nueva pestaña, independientemente de las teclas modificadoras.
  3. clic derecho
    Este método es muy difícil, si no imposible de aplicar plenamente.
    JavaScript no se puede utilizar para detectar directamente qué opción en el menú contextual se ha seleccionado.
    • Al seleccionar "Abrir enlace en nuevo (pestaña, ventana)", la página se cargará en una nueva pestaña, ventana.
    • Cuando no seleccionar cualquiera de estos, nada cargas
  4. Teclado:
    • contextMenu (ver 3.)
    • Introduzca - Véase 1.

Cómo capturar estos enlaces
No hay ninguna manera confiable para capturar todos los sucesos de enlace.

  • El evento onmouseup se puede utilizar para detectar 1, 2, y 3.
    El botón utilizado pueden ser rastreados a través de la propiedad event.button(or event.which). En todos los navegadores que no sean IE, 0 = Left, 1 = Middle, 2 = Right. En IE, 1 = Izquierda, 2 = Medio, 4 = Derecha.
  • El evento onclick se puede utilizar para capturar 1 y 2.
    la tecla de modificación se puede detectar a través de los event.altKey y event.shiftKey propiedades.
  • El evento oncontextmenu se puede utilizar para capturar 3
  • El evento onkeydown se puede utilizar para capturar 4.

El comportamiento de las teclas de modificación no se formaliza en cualquier especificación, y por tanto es browser- específico. Al menos Firefox (al menos 3+) y Chrome (¿todos?) Implementan este comportamiento clave.

Related question - Cómo interceptar una acción en un enlace (<a>)?

+0

Gracias por la respuesta detallada. Supongo que la única forma de asegurarse de seguir un clic en un enlace externo es implementar algún tipo de "página de redirección" (como lo hacen Google y Facebook). –

Cuestiones relacionadas