2012-01-19 18 views
5

Sto tentando di tenere traccia dei clic su un collegamento esterno (senza utilizzare una "pagina di reindirizzamento").Evento di cattura quando si segue un collegamento

Come posso catturare un evento quando un utente segue un collegamento, indipendentemente dal fatto che l'utente:

  1. scatta a sinistra sul link
  2. click destro sul link e aprirlo in una nuova finestra
  3. Utilizzare la tastiera per attivare il collegamento
  4. Esistono altri modi per attivare un collegamento?

L'evento onClick si applica solo al primo.

Se l'impostazione href="javascript:fireEventAndFollowLink()" l'utente non sarà in grado di aprire il collegamento in una nuova finestra (2), quindi questa non è una soluzione.

risposta

9

Un link può essere attivato in qualche modo (supponendo che i browser moderni, vedi nota a piè):

  1. Fai clic sinistro
    • Per <a target="_blank"> o <a target="_new">, la pagina verrà caricata in una nuova scheda .
    • Quando l'utente preme CTRL, la pagina verrà caricata in una nuova scheda .
    • Quando l'utente preme SHIFT, la pagina verrà caricato in una nuova finestra .
    • Per altri target valori, il collegamento può essere caricato nel schermata corrente o altro frame.
  2. Midde clic
    • La pagina verrà caricata in una nuova scheda, a prescindere dai tasti di modifica.
  3. clic destro
    Questo metodo è incredibilmente difficile, se non impossibile, attuare pienamente.
    JavaScript non può essere utilizzato per rilevare direttamente quale opzione nel menu contestuale è stata selezionata.
    • Quando si seleziona "Apri collegamento in una nuova (scheda, finestra)", la pagina verrà caricata in una nuova scheda, finestra.
    • Quando non si selezionando una qualsiasi di queste, niente carichi
  4. tastiera:
    • contextMenu (vedi 3.)
    • Enter - V. 1.

Come catturare questi collegamenti
Non c'è alcun modo affidabile per acquisire tutti gli eventi di collegamento.

  • Il onmouseup evento può essere utilizzato per rilevare 1, 2, e 3.
    Il pulsante utilizzato può essere seguito attraverso la proprietà event.button(or event.which). In tutti i browser non IE, 0 = Left, 1 = Middle, 2 = Right. In IE, 1 = Left, 2 = Middle, 4 = Right.
  • L'evento onclick può essere utilizzato per acquisire 1 e 2.
    Il tasto di modifica può essere rilevato tramite le proprietà event.altKey e event.shiftKey.
  • L'evento oncontextmenu può essere utilizzato per acquisire 3
  • L'evento onkeydown può essere utilizzato per catturare 4.

Il comportamento dei tasti modificatori non è formalizzata ogni specificazione, ed è quindi su browser specifica. Almeno Firefox (almeno 3+) e Chrome (tutti?) Implementano questo comportamento chiave.

Related question - Come intercettare un'azione su un collegamento (<a>)?

+0

Grazie per la risposta dettagliata. Immagino che l'unico modo per essere sicuri di tenere traccia di un clic su un collegamento esterno consiste nell'implementare una sorta di "pagina di reindirizzamento" (come fanno Google e Facebook). –

Problemi correlati