логотип PurpleSchool
Иконка входа
Вход
логотип PurpleSchool

Событийная модель Event в JavaScript

Автор

Дмитрий Нечаев

Событийная модель в JavaScript является основой для взаимодействия пользователя с веб-страницей. Она позволяет разработчикам создавать динамичные, интерактивные приложения, реагирующие на действия пользователя, такие как клики мышью, нажатия клавиш, перемещения курсора и другие. В этой статье мы подробно рассмотрим, что такое события в браузере, как они работают и почему без них невозможно создать ни одного современного приложения.

Что такое события?

События — это сигналы, которые отправляются браузером, когда происходит что-то важное. Это может быть действие пользователя (как клик мышью или нажатие клавиши), изменение состояния браузера (загрузка страницы), или даже определенные изменения, происходящие в API, к которым подключается страница (например, получение ответа от сервера).

Обработка событий

Для того чтобы реагировать на события, нужно их "слушать" и "обрабатывать". В JavaScript это происходит с помощью функций обратного вызова (callback functions), которые называют обработчиками событий (event handlers).

Пример базовой обработки события клика:

// Получаем элемент кнопки по его идентификатору
const button = document.getElementById('myButton');

// Добавляем обработчик события клика
button.addEventListener('click', function() {
    alert('Кнопка была нажата!');
});

Виды событий

События в браузере многообразны. Вот несколько основных типов:

  • События мыши: click, dblclick, mousedown, mouseup, mousemove, mouseover, mouseout.
  • События клавиатуры: keydown, keypress, keyup.
  • События форм: submit, change, focus, blur.
  • События документа: DOMContentLoaded, load, unload, resize, scroll.
  • События сенсорного ввода: touchstart, touchmove, touchend, touchcancel.

Фазы распространения событий

Каждое событие в JavaScript проходит три фазы:

  1. Фаза перехвата (capturing phase) — событие начинается от корня документа и спускается к целевому элементу.
  2. Целевая фаза (target phase) — событие достигает целевого элемента.
  3. Фаза всплытия (bubbling phase) — событие начинает всплывать от целевого элемента к корню документа.

Пример с перехватом и всплытием:

// Элемент-контейнер
const container = document.getElementById('container');

// Целевой элемент внутри контейнера
const target = document.getElementById('target');

// Обработчик на фазе всплытия
target.addEventListener('click', event => {
    console.log('Клик на целевом элементе');
}, false);

// Обработчик на фазе перехвата
container.addEventListener('click', event => {
    console.log('Клик на контейнере');
}, true);

Почему без событий невозможно создать приложение?

События являются ключевым элементом интерактивности веб-приложений. Без них невозможно адекватно реагировать на действия пользователя, обновлять пользовательский интерфейс в ответ на внешние изменения, контролировать ввод данных и взаимодействовать с сервером. События также важны для управления состоянием приложения, организации пользовательских сценариев и валидации данных. Они делают веб-приложения динамичными, удобными и функциональными.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile