[ITEM 5] QUESTION: Как предотвратить действие по умолчанию?
Багато елементів веб-сторінки мають вбудовану стандартну поведінку, закладену браузером за замовчуванням. Прикладами такої поведінки є відправка форми при кліку на кнопку submit, перехід за посиланням при кліку на тег a, контекстне меню при натисканні правої кнопки миші або прокручування сторінки при натисканні клавіш зі стрілками. Проте в сучасній веб-розробці часто виникає необхідність перехопити ці дії та опрацювати їх за допомогою скриптів, наприклад, надіслати дані форми через AJAX без перезавантаження сторінки.
Для скасування стандартної поведінки браузера використовується метод event.preventDefault(), який викликається в об'єкта події всередині функції-обробника. Щойно цей метод спрацьовує, браузер припиняє виконання дії за замовчуванням, пов'язаної з поточною подією. Важливо зазначити, що цей метод скасовує саме стандартну поведінку, але не зупиняє поширення події деревом DOM, тому спливання або занурення триватимуть, якщо їх не зупинити окремо.
У старому коді та застарілих стандартах JavaScript для цих же цілей часто використовувалося повернення логічного значення false наприкінці функції-обробника, наприклад, через return false. такий підхід одночасно скасовував дію за замовчуванням і зупиняв спливання події, проте в сучасному коді від нього рекомендується відмовлятися на користь явного виклику event.preventDefault() задля підвищення читабельності та передбачуваності коду.
Для перевірки того, чи було скасовано стандартну поведінку для конкретної події, розробники можуть використовувати спеціальну властивість event.defaultPrevented. Вона повертає логічне значення true, якщо метод preventdefault() уже був викликаний кимось із попередніх обробників. Це корисно у великих комплексних додатках, де кілька незалежних модулів можуть слухати ту саму подію і приймати рішення на основі поточного стану інтерфейсу.