← Назад к вопросам
Как работают события?
1.3 Junior🔥 221 комментариев
#JavaScript Core#Браузер и сетевые технологии
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Как работают события в JavaScript?
Основной механизм событий
События в JavaScript — это сигналы, которые генерируются при взаимодействии пользователя с элементами страницы или при других изменениях в браузере. Они позволяют нам реагировать на клики мыши, ввод текста, прокрутку, загрузку страницы и многое другое.
Жизненный цикл события
Когда происходит событие, браузер проходит три фазы:
- Capturing (Захват) — событие идёт от документа к целевому элементу
- Target (Цель) — событие достигает самого целевого элемента
- Bubbling (Всплытие) — событие идёт обратно к корню документа
// Событие сначала идёт вниз (capture), потом вверх (bubble)
// div > button > span
// При клике на span: div.capture → button.capture → span.target → button.bubble → div.bubble
Регистрация обработчиков события
1. Встроенные атрибуты HTML (не рекомендуется)
<button onclick="handleClick()">Нажми меня</button>
2. Свойство DOM элемента
const button = document.querySelector("button");
button.onclick = function() {
console.log("Кнопка нажата");
};
3. addEventListener (рекомендуется)
const button = document.querySelector("button");
button.addEventListener("click", function(event) {
console.log("Кнопка нажата");
}, false);
Объект Event
Каждое событие содержит информацию:
button.addEventListener("click", (event) => {
event.target; // Элемент события
event.currentTarget; // Элемент обработчика
event.type; // Тип события
event.preventDefault(); // Отменить действие
event.stopPropagation(); // Остановить всплытие
event.timeStamp; // Время события
});
Event Delegation
// ✅ Правильно — делегируем событие родителю
document.querySelector(".container").addEventListener("click", (e) => {
if (e.target.classList.contains("item")) {
handleClick(e);
}
});
Отмена действия по умолчанию
document.querySelector("a").addEventListener("click", (event) => {
event.preventDefault(); // Ссылка не перейдёт
});
Популярные события
- Mouse: click, dblclick, mouseenter, mouseleave
- Keyboard: keydown, keyup, keypress
- Form: submit, change, input, focus, blur
- Document: load, DOMContentLoaded, scroll, resize
Остановка всплытия
button.addEventListener("click", (event) => {
event.stopPropagation(); // События не пойдут к родителям
});
React и события
function Button() {
const handleClick = (e) => {
e.preventDefault();
console.log("Клик");
};
return <button onClick={handleClick}>Нажми</button>;
}
События в JavaScript — основа интерактивности веб-приложений, и их понимание критично для любого frontend разработчика.