TGViewer
Дивовижний світ веброзробки Дивовижний світ веброзробки @babichdev · 2.91K subscribers
Post #86 1.78K
Як зупиняти події?
Будь-який розробник рано чи пізно стикається з необхідністю “зловити” подію, виконати якусь свою логіку та зупинити подальшу роботу цієї події.

І річ у тім, що існує два сценарії, в яких подія може продовжитись: це спливання події вгору по DOM та виконання стандартної поведінки елемента.

Найкращий приклад — будь-яка кнопка у формі. Найперша проблема, з якою ми стикнемося, якщо просто навісимо event listener — наш код виконається, але відразу по тому сторінку буде автоматично перезавантажено. Бо така от поведінка у будь-якої кнопки у формі — відправляти дані форми на сервер, незалежно від того, хочемо ми цього чи ні.

Тут у нагоді стане старий добрий метод Event.preventDefault, який каже бравзеру відкинути стандартну поведінку елемента — тобто зупиняє виконання події за замовчуванням.

А якщо у нас із якоїсь причини на вкладених елементах однакові слухачі (наприклад, слухаємо клік на батьківському й дочірньому елементі), то на поміч прийде Event.stopPropagation — метод, який зупиняє просування події вгору по DOM.

До речі, є ще радикальніший спосіб зупинити виконання event listeners — це Event.stopImmediatePropagation, який скасовує виконання наступних слухачів тієї ж події на тому ж елементі.

Знати різницю між цими методами критично важливо, щоби уникнути дивної поведінки у формах, модалках чи складних компонентах. Ну і аби не писати, як я свого часу, коли ніяк не міг запамʼятати, хто з них що робить:

el.addEventListener(event => {
event.stopPropagation();
event.preventDefault();
});


MDN: Event.stopPropagation
MDN: Event.stopImmediatePropagation
MDN: Event.preventDefault

А ви як, досі плутаєтесь в цих методах, як я, чи нарешті запамʼятали різницю? Розкажіть в коментарях!

@babichdev

***
Збір на РЕБ для 109 ОГШБ 10 ОГШБр «Едельвейс» триває, і ми прямуємо до мети в 100 000 грн! Нагадую, кожні 50 грн — шанс виграти подарунок і допомогти ЗСУ.
  • ❤ 26
  • 👏 11
  • 🔥 9
More from @babichdev
  1. Sep 30, 2026Товариство, запрошую вас цієї суботи, 3 жовтня, на Fwdays Tech Summit — онлайн конференцію…
  2. Sep 28, 2026#збір_на_авто_для_21 Товариство, почнімо тиждень з доброго діла. Я би дуже хотів, аби ми ц…
  3. Sep 27, 2026Знайшов своє старезне резюме. Аж пустив скупу сльозу за тими часами, коли навіть з таким м…
  4. Sep 25, 2026Днями на редіті побачив допис, в якому автор питав, чому його лічильник часу на сторінці з…
  5. Sep 23, 2026Який ШІ найкращий для навчання? Відповідь проста — той, з яким ви чогось навчились. ШІ це…
  6. Sep 18, 2026Оце я, канєшна, провтикав. Конфа завтра, 19 вересня. Ще встигаєте взяти квиточок.
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →