Захват событий с помощью addEventListener в JavaScript работает следующим образом: 3
- Фаза цели (target phase) — срабатывание события на элементе, на который пользователь кликнул. 3
- Фаза всплытия (bubble phase) — событие всплывает по цепочке предков целевого элемента, пока не достигнет корневого элемента, а затем объектов document и window. 3
Третий аргумент captureOrOptions метода addEventListener позволяет перехватывать события на разных этапах их распространения: 3
- Если аргумент пропущен или имеет значение false, обработчик будет захватывать события на фазе цели и фазе всплытия. 3
- Если же аргумент имеет значение true, обработчик сработает уже на фазе захвата (погружения). 3
Например, при взаимодействии с объектом, который находится ниже элемента со свойством capture: true, сначала событие будет обработано на последнем, далее обработчик сработает на всех потомках и только потом на всех родителях. 1