2009-10-28 8 views
6

Ho avuto a che fare con un burrascoso problema di Javascript che coinvolge il monitoraggio quando un utente fa clic su un collegamento (nel caso in cui siate curiosi, eccolo: Why does using target="_blank" cause Javascript to fail?).Aspetti negativi di onMousedown vs. onClick?

Ho capito che posso risolvere il problema monitorando un evento onMousedown piuttosto che un evento onClick.

Sono curioso degli aspetti negativi di questo approccio. Quelli mi viene in mente:

  1. Se un utente fa clic su un link e poi spostato il mouse fuori il link prima di rilasciarlo, quindi l'evento sarebbe registrato anche se l'utente non aveva visitato il link
  2. Se un utente utilizza il tasto tab per spostare il focus browser al link e poi premi invio, il clic non sarebbe stato registrato

Nessuno di questi sono comuni, quindi non sono terribilmente preoccupati per loro.

Ci sono altri aspetti negativi che mi mancano?

risposta

6

Un altro: il mouse cattura anche i clic di destra/centrale.

Ma per i tuoi due motivi, vorrei attenermi a onclick. Conosco un bel po 'di persone che usano il tastiere della tastiera. Soprattutto ricerca-e-gotolink in FF. (/ Per cercare seguito da invio per andare al link).

Ma se questi due non sono un problema per te, penso che anche i clic di medio/medio non lo sarebbero.

Penso che il modo per tenere traccia di tutti gli utenti che seguono il link è abbastanza difficile - l'utente può fare clic destro e cliccare sulla nuova scheda/finestra ...

+0

Sono d'accordo con il tuo post, ma dà fastidio io che la pagina di ricerca di Google utilizza onmousedown anziché onclick per tracciare i clic, il che suggerisce che gestiscono questi problemi o almeno considerano le best practice di base. qualche idea? – Dunc

+0

Non so esattamente come Google tiene traccia dei clic, ma questi sono alcuni punti su cui posso pensare di utilizzarli su onmousedown: sono interessati al click aggregato di età - pochi o meno non contano. Utilizzando onclick/onmousedown, non esiste un modo affidabile per sapere se l'utente ha seguito o meno un collegamento (utilizzando onclick può mancare il clic con il tasto destro del mouse + aprire in una nuova scheda, usando il mouse può fare in modo che ogni clic con il tasto destro venga registrato come segue un link). Tuttavia, il tasto destro potrebbe significare che l'utente è in qualche modo interessato al collegamento. – Raze

+4

Inoltre, l'evento Mousedown dà più tempo per inviare dati a Google prima che il collegamento sia seguito (la piccola differenza di tempo dopo aver premuto il pulsante del mouse e prima di rilasciarlo) - abbastanza per una richiesta da inviare al server di Google. Non sono sicuro se onclick lascerà abbastanza tempo per questo. L'opzione alternativa, che Yahoo fa, è quella di portarti prima al loro server, e poi reindirizzarti al tuo URL di interesse. – Raze