Обработчики событий в JavaScript вызываются по порядку?

Если я прикреплю несколько обработчиков событий к одному событию в одном элементе DOM, гарантированно ли будут вызываться обработчики событий в том порядке, в котором они были добавлены? Или я не должен полагаться на это поведение?


person Sasha Chedygov    schedule 24.04.2010    source источник


Ответы (1)


Этот был изменен в DOM3! В то время как спецификация событий DOM уровня 2 заявлял

Когда событие достигает цели, все прослушиватели событий, зарегистрированные в EventTarget. Хотя все EventListeners на EventTarget гарантированно инициируются любым событием, полученным этим EventTarget, никаких указаний не делается в отношении порядка, в котором они будут получать событие относительно другого EventListeners на EventTarget.

Текущая спецификация событий DOM уровня 3 теперь государство

Реализация ДОЛЖНА определить прослушиватели событий-кандидатов текущей цели< /а>. Это ДОЛЖЕН быть список всех прослушивателей событий, которые были зарегистрированы на текущей цели в порядке их регистрации. HTML5 определяет порядок слушателей регистрируется через атрибуты обработчика событий. […]

Наконец, реализация ДОЛЖНА обрабатывать все возможные обработчики событий чтобы […]

Однако я не могу найти ссылку на это поведение в черновике DOM 4. больше.

person Bergi    schedule 29.07.2014
comment
Предположительно, если это происходит из HTML5, это означает, что современные браузеры уже делают это, как вы думаете? - person thomasrutter; 25.05.2016
comment
@thomasrutter: Да, в значительной степени - они стандартизируют только то, что реализуют. - person Bergi; 25.05.2016
comment
Ответ кажется устаревшим. Текущая спецификация DOM Level 3, к сожалению, больше не включает цитируемый абзац о прослушивателях событий-кандидатов. - person Tomasz P. Szynalski; 26.11.2019