3 votes

Les gestionnaires d'événements en JavaScript sont-ils déclenchés pour un événement en FIFO, LIFO ou en parallèle ?

Les gestionnaires d'événements en JavaScript sont-ils déclenchés pour un événement en FIFO, LIFO ou en parallèle ?

6voto

kangax Points 19954

C'est très simple. Module d'événements DOM niveau 2 ne précise pas l'ordre dans lequel les récepteurs d'événements doivent être activés. Cependant, le module DOM Level 3 Events spécifie l'ordre pour être identique à l'enregistrement un.

Premier inscrit - premier licencié.

Notez que le module DOM Level 3 Events est encore à l'état de projet tandis que celui de niveau 2 est un recommandation . Néanmoins, les navigateurs modernes suivent souvent la sémantique de ce projet de spécification de niveau 3, au lieu d'une spécification plus ancienne de niveau 2.

Dans la pratique, il n'y a que IE ne respecte pas l'ordre d'auditeurs d'événements. Tous les autres navigateurs l'implémentent comme FIFO (et comme décrit dans DOM L3 Events). Vous pouvez également trouver tests en ligne :)

3voto

CMS Points 315406

En raison de la nature monotâche de JavaScript, les événements et les minuteries sont mis en file d'attente et exécutés séquentiellement, un par un, et s'exécutent lorsqu'il y a une ouverture dans l'exécution.

La meilleure façon de le démontrer est d'utiliser un diagramme :

Events and Timers

Après la fin de l'exécution du premier bloc, deux événements asynchrones sont en attente, le Rappel du clic de la souris y el Minuterie le navigateur sélectionne le Clic de souris dans cet exemple, et la minuterie attendra le prochain moment possible pour s'exécuter.

Consultez ce très bon article sur Minuteries et événements par John Resig.

0voto

Thiyagaraj Points 1364

PPK a rédigé un excellent article sur l'Event bubbling et l'Event Capturing.

http://www.quirksmode.org/js/events_order.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X