Как предотвратить действие по умолчанию?
Многие элементы веб-страницы имеют встроенное стандартное поведение, заложенное браузером по умолчанию. Примерами такого поведения являются отправка формы при клике на кнопку submit, переход по ссылке при клике на тег a, контекстное меню при нажатии правой кнопкой мыши или прокрутка страницы при нажатии клавиш со стрелками. Однако в современной веб-разработке часто возникает необходимость перехватить эти действия и обработать их с помощью скриптов, например, отправить данные формы через AJAX без перезагрузки страницы.
Для отмены стандартного поведения браузера используется метод event.preventDefault(), который вызывается у объекта события внутри функции-обработчика. Как только этот метод срабатывает, браузер прекращает выполнение действия по умолчанию, связанного с текущим событием. Важно отметить, что этот метод отменяет именно стандартное поведение, но не останавливает распространение события по дереву DOM, поэтому всплытие или погружение будут продолжаться, если их не остановить отдельно.
В старом коде и устаревших стандартах JavaScript для этих же целей часто использовался возврат логического значения false в конце функции-обработчика, например, через return false. Такой подход одновременно отменял действие по умолчанию и останавливал всплытие события, однако в современном коде от него рекомендуется отказываться в пользу явного вызова event.preventDefault() для повышения читаемости и предсказуемости кода.
Для проверки того, было ли отменено стандартное поведение для конкретного события, разработчики могут использовать специальное свойство event.defaultPrevented. Оно возвращает логическое значение true, если метод preventdefault() уже был вызван кем-то из предыдущих обработчиков. Это полезно в больших комплексных приложениях, где несколько независимых модулей могут слушать одно и то же событие и принимать решения на основе текущего состояния интерфейса.