События

Введение в обработку событий

Последнее обновление: 29.10.2023

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

Вкратце общий механизм выглядит следующим образом. Сначала собственно происходит событие, например, пользователь нажал на кнопку. Объект, который сгенерировал событие, еще называется эмиттером/эмитентом события. После того как произошло событие, оно помещается в очередь событий (event queue), что гарантирует, что события, которые были сгенерированы первыми, также будут обработаны в первую очередь. Цикл событий (event loop) постоянно проверяет, есть ли новое событие в очереди событий, и если оно есть, соответствующее событие пересылается обработчикам событий (event handler). В JavaScript эти обработчики событий представляют собой простые функции, которые позволяют отреагировать на возникшее событие. Подобный подход еще называют событийным программированием (event-driven programming).

Событийный цикл в языке JavaScript

Если для события не определено обработчиков, то для него выполняется действие, которое определено браузером по умолчанию.

В JavaScript есть следующие типы событий:

  • События мыши (перемещение курсора, нажатие мыши и т.д.)

  • События клавиатуры (нажатие или отпускание клавиши клавиатуры)

  • События жизненного цикла элементов (например, событие загрузки веб-станицы)

  • События элементов форм (нажатие кнопки на форме, выбор элемента в выпадающем списке и т.д.)

  • События, возникающие при изменении элементов DOM

  • События, возникающие при касании на сенсорных экранах

  • События, возникающие при возникновении ошибок

Стоит отметить, что применение событий не ограничены только графическим интерфейсом, однако графический интерфейс - наиболее показательная сфера применения событий.

Рассмотрим простейшую обработку событий. Например, на веб-странице у нас есть следующий элемент div:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>METANIT.COM</title>
</head>
<body>
    <div id="rect" onclick="console.log('Clicked!')" style="width:50px;height:50px;background-color:blue;"></div>
</body>
</html>

Здесь определен обычный блок div, который имеет атрибут onclick, который задает обработчик события нажатия на блок div. То есть, чтобы обработать какое-либо событие, нам надо определить для него обработчик. Обработчик представляет собой код на языке JavaScript. В данном случае обработчик просто выводит строку на консоль:

console.log('Clicked!')

И при нажатии на блок мы сможем увидеть в консоли браузера соответствующее сообщение:

Обработка событий в языке JavaScript

Базовые события

Вкратце перечислю основные события, которые мы можем использовать в JavaScript. События мыши:

Событие

Описание

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

click

возникает при нажатии указателем мыши на элемент

MouseEvent

dblclick

возникает при двойном нажатии указателем мыши на элемент

MouseEvent

contextmenu

возникает при открытии контекстного меню (правой кнопкой мыши)

MouseEvent

mousedown

возникает при нахождении указателя мыши на элементе, когда кнопка мыши находится в нажатом состоянии

MouseEvent

mouseup

возникает при нахождении указателя мыши на элементе во время отпускания кнопки мыши

MouseEvent

mousemove

возникает при прохождении указателя мыши над элементом

MouseEvent

mouseover

возникает при вхождении указателя мыши в границы элемента

MouseEvent

mouseout

возникает, когда указатель мыши выходит за пределы элемента

MouseEvent

mouseenter

возникает при вхождении указателя мыши в границы элемента

MouseEvent

mouseleave

возникает, когда указатель мыши выходит за пределы элемента

MouseEvent

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

Событие

Описание

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

keydown

возникает при нажатии клавиши клавиатуры и длится, пока нажата клавиша

KeyboardEvent

keyup

возникает при отпускании клавиши клавиатуры

KeyboardEvent

keypress

возникает при нажатии клавиши клавиатуры, но после события keydown и до события keyup.

KeyboardEvent

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

Событие

Описание

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

input

возникает при изменении текста в элементах <input> и textarea или в элемент с атрибутом contenteditable

Event

change

возникает при изменении значения в списках, флажках (checkbox) или радиокнопках

Event

submit

возникает при отправке формы

Event

reset

возникает при сбросе формы (через кнопку reset)

Event

События фокусировки:

Событие

Описание

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

focus

возникает при получении фокуса

FocusEvent

blur

возникает при потере фокуса

FocusEvent

focusin

возникает при получении фокуса (в отличие от события focus, это событие поднимающееся. Про поднимающиеся и опускающиеся события далее)

FocusEvent

focusout

возникает при потере фокуса(это событие поднимающееся в отличие от события blur)

FocusEvent

Общие события интерфейса:

Событие

Описание

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

load

возникает при загрузке веб-страницы

UIEvent

unload

возникает при выгрузке веб-страницы (например, когда запрошена страница по новому адресу)

UIEvent

abort

возникает при отмене загрузки ресурса

UIEvent

Error

возникает при генерации ошибки при загрузке страницы (например, ошибка в коде JavaScript)

UIEvent

select

возникает при выделении текст на странице

UIEvent

resize

возникает при изменении размеров окна браузера

UIEvent

scroll

возникает при прокрутке

UIEvent

beforeunload

возникает непосредственно перед выгрузкой страницы

BeforeUnloadEvent

DOMContentLoaded

возникает при полной загрузке дерева DOM

Event

cut

возникает при вырезании текста из поля ввода (например, с помощью Ctrl+X)

ClipboardEvent

copy

возникает при копировании текста из поля ввода (например, с помощью Ctrl+C)

ClipboardEvent

paste

возникает при вставке текста в поле ввода (например, с помощью Ctrl+V)

ClipboardEvent

select

возникает при выделении текста в поле ввода

ClipboardEvent

События мобильных устройств и других устройств с сенсорным экраном:

Событие

Описание

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

orientationchange

возникает при изменении ориентации устройства

Event

deviceorientation

возникает, когда появляются новые данные об ориентации устройства

DeviceOrientationEvent

devicemotion

возникает с регулярными интервалами и указывает на силу ускорения, действующую на конечное устройство

DeviceMotionEvent

touchstart

возникает при касании дисплея

TouchEvent

touchend

возникает, когда палец убран с дисплея (касание завершилось)

TouchEvent

touchmove

возникает при движении пальцем по сенсорному дисплею

TouchEvent

touchcancel

возникает при прерывании отслеживания касаний

TouchEvent

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850