Les gestionnaires d'événements en JavaScript sont-ils déclenchés pour un événement en FIFO, LIFO ou en parallèle ?
Réponses
Trop de publicités?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 :)
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 :
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.