1

Предположим, что есть div, который содержит ссылку (href), и есть три прослушивателя событий - на-клик-1) для всей страницы, 2) на div 3) тег. Если пользователь нажимает на тег, как запускаются слушатели? Каков порядок их регистрации?Как определяется порядок прослушивателей событий в javascript?

ответ

1

По сути, это зависит. Есть два этапа для событий: «Захват» (происходит первым), который идет вниз, и «Bubbling», который идет вверх по элементу.

JS может делать то и другое, поэтому при создании пользовательского прослушиваемого события у вас есть третья булева переменная, например.

parent.addEventListener('click',doSomething2,true) child.addEventListener('click',doSomething,false)

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

Возвращаясь к коду образца и цитировать this page:

Если пользователь нажмет на дочерний элемент происходит следующее:

  1. Клик событие начинается в фазе захвата. Событие выглядит, если какой-либо дочерний элемент дочернего элемента имеет обработчик события onclick для этапа захвата.

  2. Событие находит одно на родительском. Выполняется doSomething2().

  3. Событие перемещается вниз до самой цели, не найдено больше обработчиков событий для фазы захвата. Событие переходит на свою фазу барботирования и выполняет doSomething(), который зарегистрирован для дочернего элемента для фазы барботирования.

  4. Событие перемещается вверх и проверяет, имеет ли какой-либо элемент предка цели обработчик события для фазы барботирования. Это не так, поэтому ничего не происходит.

страница Я связала выше, имеет намного больше информации, но мы надеемся, что ответы на основной вопрос.

Смежные вопросы