Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: event propagation, bubbling, capturing, DOM events, addEventListener

Когда события обычно отлавливаются — на всплытии или на погружении?

Вопрос проверяет понимание фаз распространения событий в DOM и того, на какой из них чаще всего обрабатываются события в веб-разработке.

Короткий ответ

События обычно отлавливаются на фазе всплытия (bubbling). Это поведение по умолчанию для большинства событий, таких как click или keydown. Фаза погружения (capturing) используется реже, в основном для перехвата событий до того, как они достигнут целевого элемента. Всплытие более интуитивно и удобно для делегирования событий.

Длинный ответ

Фазы распространения событий

Когда в DOM происходит событие, оно проходит три фазы: погружение (capturing), цель (target) и всплытие (bubbling). На фазе погружения событие движется от корневого элемента (document) вниз к целевому элементу. На фазе всплытия — наоборот, от целевого элемента вверх к корню.

Почему всплытие используется чаще

По умолчанию метод addEventListener устанавливает обработчик на фазу всплытия (третий аргумент false или опущен). Это сделано для удобства: всплытие позволяет реализовать делегирование событий, когда один обработчик на родителе обрабатывает события от множества дочерних элементов. Например, для списка <ul> с сотней <li> можно повесить один обработчик на <ul> и ловить клики по любым <li> через всплытие.

Пример кода

// Обработчик на всплытие (по умолчанию)
document.querySelector('ul').addEventListener('click', (event) => {
  console.log('Клик по', event.target.tagName);
});

// Обработчик на погружение (третий аргумент true)
document.querySelector('ul').addEventListener('click', (event) => {
  console.log('Погружение: клик по', event.target.tagName);
}, true);

Когда применяется погружение

Фаза погружения используется реже, например, для перехвата событий до того, как они достигнут целевого элемента, или для отладки. Также она полезна, когда нужно обработать событие до того, как его обработает дочерний элемент.

Вывод: Всплытие — стандартный и наиболее практичный способ обработки событий в веб-разработке, особенно для делегирования. Погружение применяется в специфических сценариях, где требуется ранний перехват.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    3

Навыки

  • JavaScript

    JavaScript

  • HTML

    HTML

Ключевые слова

#event propagation

#bubbling

#capturing

#DOM events

#addEventListener

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию