2009-07-08 7 views
0

Je veux savoir quand tous les événements d'un événement de souris ont été déclenchés.détecter quand tous les événements d'un mouseevent ont été déclenchés?

Par exemple, si je suis inscrit aux auditeurs sur le document et un élément, puis cliquez sur l'élément, je pourrais obtenir plusieurs événements de tir (plus si les événements qui en résultent bouillonnent).

Comment savoir si tous les événements résultant de ce clic sont terminés?

This site fournit une façon de faire cela - ils regroupent les événements de la souris dans une liste en mettant à jour la liste avec de nouveaux événements sur un intervalle de temps. J'espérais un moyen automatisé sans minuterie.

Répondre

0

Si vous êtes juste vouloir exécuter un code après tous les événements ont terminé, vous devez utiliser un délai d'attente d'une valeur de 0:

window.setTimeout(function() 
{ 
    // All events have finished, so we can run our code now 
}, 0); 

Timers en Javascript sont exécutés sur le même fil, donc ils ne comptent même pas pendant que d'autres codes Javascript sont en cours d'exécution. Le réglage d'une minuterie avec un nombre de 0 s'exécutera lorsque le thread deviendra inactif.

Le site que vous avez mentionné ne met pas à jour cette liste sur un intervalle de temps - il met réellement cette liste à jour chaque fois que l'événement se déclenche en utilisant les gestionnaires de tous ces objets. Il n'est pas possible d'utiliser un intervalle de temps pour attraper des événements.

+0

Merci pour votre suggestion. Il me semble que le site de ppk utilise un timeout pour grouper des événements sur une liste (voir log.end et comment il s'appelle). – jedierikb

+0

Pas de soucis, content d'avoir été un peu d'aide. Vous avez raison de dire que log.end() est appelé depuis un timer. Cependant, log.msg() est la fonction qui sort de la liste. log.end(), entre autres choses, s'assure que le journal défile vers le bas chaque fois qu'une entrée est ajoutée. –

Questions connexes