PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

В чем разница между stopPropagation и preventDefault?

DOM и браузер

`stopPropagation` останавливает распространение события по дереву DOM, а `preventDefault` отменяет действие браузера по умолчанию. Это независимые вещи.

stopPropagation

Не даёт событию всплывать к родителям (или погружаться к детям). Другие элементы о событии не узнают.

child.addEventListener('click', (e) => {
  e.stopPropagation(); // родители не получат событие
});

Применение: вложенные кликабельные элементы, модалки (клик внутри не закрывает по клику на оверлей).

preventDefault

Отменяет стандартное поведение браузера, но событие продолжает всплывать.

link.addEventListener('click', (e) => {
  e.preventDefault(); // не переходить по ссылке
});
form.addEventListener('submit', (e) => {
  e.preventDefault(); // не перезагружать страницу
});

Применение: SPA-навигация, AJAX-формы, кастомные контролы.

Главное различие

  • stopPropagation — про распространение события (кто ещё его получит).
  • preventDefault — про действие по умолчанию (что сделает браузер).

Их можно вызывать вместе, если нужно и то, и другое. return false в inline-обработчиках делает оба сразу (но так не пишут).

Коротко для собеседования

stopPropagation останавливает всплытие/погружение события (другие обработчики не сработают); preventDefault отменяет действие браузера (переход по ссылке, submit), но всплытие продолжается. Это независимые методы, применимы вместе.

Другие вопросы раздела