логотип 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);

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

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

Стрелочка влевоСобытие input в JavaScriptОбъект события Event в JavaScriptСтрелочка вправо

Все гайды по Javascript

Как работает метод trim() - JavaScriptКак работает метод toUpperCase() - JavaScriptКак работает метод toLowerCase() - JavaScriptКак работает метод substring() - JavaScriptКак работает метод startsWith() - JavaScriptКак работает метод split() - JavaScriptКак работает метод slice() - JavaScriptКак работает метод search() - JavaScriptКак работает метод replaceAll() - JavaScriptКак работает метод replace() - JavaScriptКак работает метод repeat() - JavaScriptКак работает метод padStart() - JavaScriptКак работает метод padEnd() - JavaScriptКак работает метод matchAll() - JavaScriptКак работает метод match() - JavaScriptКак работает метод localeCompare() - JavaScriptКак работает свойство length - JavaScriptКак работает метод lastIndexOf() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод fromCodePoint() - JavaScriptКак работает метод fromCharCode() - JavaScriptКак работает метод endsWith() - JavaScriptКак работает метод concat() - JavaScriptКак работает метод codePointAt() - JavaScriptКак работает метод charCodeAt() - JavaScriptКак работает метод charAt() - JavaScript
Итератор в JavaScript
try...catch в JavaScriptError в JavaScript
Событие wheel в JavaScriptСобытие unload в JavaScriptСобытие touch в JavaScriptСобытие submit в JavaScriptСобытие scroll в JavaScriptСобытие reset в JavaScriptМетод .preventDefault() в JavaScriptСобытие mouseover в JavaScriptСобытие mouseout в JavaScriptСобытие load в JavaScriptСобытие keyup в JavaScriptСобытие keydown в JavaScriptСобытие invalid в JavaScriptСобытие input в JavaScriptСобытийная модель Event в JavaScriptОбъект события Event в JavaScriptСобытие DOMContentLoaded в JavaScriptСобытие dblclick в JavaScriptСобытие click в JavaScriptСобытие change в JavaScriptСобытие beforeunload в JavaScript
Как работает метод some() - JavaScriptКак работает метод reverse() - JavaScriptКак работает метод reduce() - JavaScriptКак работает метод map() - JavaScriptКак работает метод isArray() - JavaScriptКак работает метод indexOf() - JavaScriptКак работает метод includes() - JavaScriptКак работает метод from() - JavaScriptКак работает метод forEach() - JavaScriptКак работает метод flatMap() - JavaScriptКак работает метод flat() - JavaScriptКак работает метод findIndex() - JavaScriptКак работает метод find() - JavaScriptКак работает метод filter() - JavaScriptКак работает метод every() - JavaScriptМассивы в JavaScript
Открыть базу знаний