Если у меня есть несколько событий «щелчка», добавленных к одному объекту DOM, всегда ли они будут срабатывать в зависимости от способа их добавления?

#javascript #addeventlistener #dom-events

#javascript #addeventlistener #dom-события

Вопрос:

Если я добавлю несколько событий щелчка к одному объекту DOM, допустим

 document.addEventListener('click', function(e){

})

document.addEventListener('click2', function(e){

})
  

всегда ли они будут срабатывать в зависимости от того, когда они будут добавлены? сначала «click», затем «click2»?

Комментарии:

1. Вокруг этого нет формальной спецификации, поэтому, даже если они выполняются в каждом браузере, в котором вы тестируете, не полагайтесь на их запуск по порядку. Если вам нужна последовательная обработка событий, привяжите один обработчик щелчка, а затем делегируйте все, что должно произойти при нажатии внутри этого обработчика, вместо привязки нескольких обработчиков.

2. вы также можете использовать обработку событий, чтобы убедиться, что «самый глубокий» обработчик событий вызывается первым. Например, вы можете прослушивать нажатия на кнопку и на div, содержащий эту кнопку.

3. привет @Mike’Pomax’Camermans, можешь привести пример, пожалуйста

4. Просто… что я сказал? Вместо двух addEventListener привязок просто добавьте одну и заставьте функцию обработки последовательно вызывать две нужные вам функции. addEventListener("click", evt => { doFirstThing(evt); doSecondThing(evt); }) .

5. Обычно «DOMEvents» являются синхронными. Но нет официальных доказательств того, что вы говорите. Вполне вероятно, что разные результаты на разных устройствах будут появляться или вести себя непоследовательно. Более того, код, написанный таким образом, даст вам дополнительную нагрузку. На этом этапе проверка событий и вызов двух отдельных функций в рамках одного прослушивателя событий потребует от вас выполнения как синхронных, так и менее логичных запросов.