Обработчики событий в JavaScript вызываются по порядку? - PullRequest
38 голосов
/ 25 апреля 2010

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

1 Ответ

29 голосов
/ 29 июля 2014

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

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

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

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

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

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

...