События

Материал из Энциклопедия интернет-маркетинга MarketWiki
(перенаправлено с «Событие»)

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

О событиях в веб-аналитике и ивент-маркетинге см. статью Event (Событие).

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

Модель событий

[править]

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

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

Основные типы событий

[править]

События классифицируются по типу взаимодействия.

События мыши

[править]
  • click - клик левой кнопкой мыши.
  • dblclick - двойной клик.
  • mouseover - курсор мыши наведён на элемент.
  • mouseout - курсор мыши покинул элемент.
  • mousedown - кнопка мыши нажата (но ещё не отпущена).
  • mouseup - кнопка мыши отпущена.
  • mousemove - движение курсора над элементом.
  • contextmenu - вызов контекстного меню (клик правой кнопкой мыши).

События клавиатуры

[править]
  • keydown - клавиша нажата (срабатывает первой).
  • keypress - клавиша нажата и удерживается (срабатывает после keydown).
  • keyup - клавиша отпущена.

События элементов форм

[править]
  • submit - отправка формы.
  • change - изменение значения поля (для input, select, textarea).
  • input - ввод данных в поле (срабатывает на каждое изменение).
  • focus - получение фокуса элементом.
  • blur - потеря фокуса элементом.
  • reset - сброс формы.

События документа и окна

[править]
  • load - полная загрузка страницы со всеми ресурсами.
  • DOMContentLoaded - загрузка HTML-документа завершена, но внешние ресурсы (изображения, стили) ещё могут загружаться.
  • resize - изменение размера окна браузера.
  • scroll - прокрутка страницы.
  • unload - уход со страницы (закрытие вкладки, переход по ссылке).

Назначение обработчиков

[править]

Существует несколько способов назначить функцию-обработчик на событие.

HTML-атрибуты

[править]

Обработчик задаётся непосредственно в HTML-коде с помощью атрибутов, начинающихся с "on".

<button onclick="alert('Клик!')">Нажми меня</button>

Этот способ считается устаревшим, так как смешивает JavaScript и HTML.

Свойства DOM-элементов

[править]

Обработчик назначается через свойство элемента.

let button = document.getElementById('myButton');
button.onclick = function() {
    alert('Клик!');
};

Недостаток - можно назначить только 1 обработчик на событие.

addEventListener()

[править]

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

let button = document.getElementById('myButton');
button.addEventListener('click', function() {
    alert('Клик!');
});

Синтаксис: element.addEventListener(событие, обработчик, фаза).

Объект события

[править]

При возникновении события браузер создаёт объект события, который автоматически передаётся в обработчик. Этот объект содержит детальную информацию о событии.

element.addEventListener('click', function(event) {
    console.log(event.type);       // тип события
    console.log(event.target);     // элемент, на котором произошло событие
    console.log(event.clientX);    // координаты курсора по X
    console.log(event.clientY);    // координаты курсора по Y
});

Основные свойства объекта события:

  • type - тип события.
  • target - элемент, на котором произошло событие.
  • currentTarget - элемент, к которому привязан обработчик.
  • clientX / clientY - координаты курсора относительно окна браузера.
  • keyCode - код нажатой клавиши (для клавиатурных событий).
  • preventDefault() - отменяет действие браузера по умолчанию.
  • stopPropagation() - прекращает всплытие события.

Всплытие и погружение

[править]

Когда событие происходит на элементе, оно не ограничивается только этим элементом. Событие сначала движется вниз (погружение) от корня документа до целевого элемента, а затем всплывает вверх (всплытие) обратно.

  • Погружение (capturing) - событие идёт от корня вниз к целевому элементу.
  • Всплытие (bubbling) - событие идёт от целевого элемента вверх к корню.

По умолчанию обработчики срабатывают на фазе всплытия. Можно задать фазу погружения, передав третьим параметром true в addEventListener.

Делегирование событий

[править]

Делегирование - это техника, при которой обработчик назначается родительскому элементу, но срабатывает для всех дочерних элементов.

document.getElementById('parent').addEventListener('click', function(event) {
    if (event.target.tagName === 'LI') {
        console.log('Клик на элементе списка:', event.target.textContent);
    }
});

Это особенно полезно для динамически добавляемых элементов и оптимизации производительности.

События в маркетинге

[править]

В интернет-маркетинге события используются для:

  • Отслеживания действий пользователей в системах веб-аналитики (Яндекс Метрика, Google Analytics 4).
  • Создания интерактивных элементов (калькуляторы, таймеры, попапы).
  • Валидации форм перед отправкой.
  • Реализации бесконечной прокрутки и подгрузки контента.
  • A/B-тестирования элементов интерфейса.

Связанные термины

[править]