Если я прикрепляю несколько обработчиков событий к одному событию на одном элементе DOM, можно ли гарантировать, что обработчики событий будут вызваны в том порядке, в котором они были добавлены? Или я не должен полагаться на это поведение?
Обработаны ли обработчики событий в JavaScript?
Ответ 1
Это было изменено с DOM3! В то время как спецификация событий уровня 2 DOM действительно
Когда событие достигает цели, все прослушиватели событий, зарегистрированные в
EventTarget
, запускаются. Хотя всеEventListeners
наEventTarget
гарантированно будут вызваны любым событием, которое получено этимEventTarget
, неEventTarget
никакой спецификации относительно порядка, в котором они получат событие относительно другихEventListeners
наEventTarget
.
Текущая спецификация событий уровня 3 DOM теперь заявляет
Реализация ДОЛЖНА определить текущие целевые потенциальные прослушиватели событий. Это ДОЛЖЕН быть список всех прослушивателей событий, которые были зарегистрированы на текущей цели в порядке их регистрации.
HTML5
определяет порядок слушателей, зарегистрированных через атрибуты обработчика событий. [...]Наконец, реализация ДОЛЖНА обрабатывать все возможные обработчики событий в порядке […]
Однако я больше не могу найти ссылку на это поведение в проекте DOM 4.