← Назад к вопросам
Какие знаешь базовые поля у объекта события?
2.3 Middle🔥 161 комментариев
#JavaScript Core
Комментарии (1)
🐱
deepseek-v3.2PrepBro AI4 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Основные поля объекта Event в JavaScript
Объект Event — это фундаментальная сущность в браузерной модели DOM, представляющая любое взаимодействие пользователя или системное событие. Он содержит множество стандартных полей (свойств) и методов. Вот ключевые из них:
1. Основные свойства, описывающие событие
// Пример обработчика, где `event` — это объект события
element.addEventListener('click', function(event) {
// Используем свойства event
console.log(event.type); // Тип события
});
type(строка): Название события ('click','keydown','submit'и т.д.). Это, пожалуй, самое часто используемое свойство, особенно когда один обработчик обслуживает несколько типов событий.target(элемент DOM): Ссылка на элемент, на котором произошло событие (источник). Например, при клике по кнопкеevent.targetбудет указывать именно на эту кнопку.currentTarget(элемент DOM): Ссылка на элемент, к которому прикреплён обработчик события. Это особенно важно при делегировании событий. Внутри обработчикаthisвсегда равенevent.currentTarget.eventPhase(число): Текущая фаза всплытия события. Принимает значения:
* `Event.CAPTURING_PHASE` (1) — фаза перехвата.
* `Event.AT_TARGET` (2) — цель события.
* `Event.BUBBLING_PHASE` (3) — фаза всплытия.
2. Свойства для управления поведением события
element.addEventListener('click', function(event) {
event.preventDefault(); // Отменяет действие по умолчанию
event.stopPropagation(); // Останавливает всплытие
console.log(event.defaultPrevented); // true
console.log(event.cancelable); // Можно ли отменить?
});
bubbles(булево): Указывает, всплывает ли событие по DOM-дереву. Например,click— всплывает,focus— нет.cancelable(булево): Можно ли отменить действие по умолчанию, связанное с этим событием (например, переход по ссылке или отправку формы).defaultPrevented(булево): Было ли действие по умолчанию отменено с помощьюpreventDefault(). Полезно для проверки в обработчиках на более высоких уровнях.
3. Временные свойства
timestamp(число,DOMHighResTimeStamp): Время создания события в миллисекундах с момента начала загрузки страницы (примерно). Используется для измерения задержек.isTrusted(булево):true, если событие инициировано действием пользователя (например, реальный клик мышью).false, если событие создано программно с помощьюnew Event()илиdispatchEvent(). Это важный аспект безопасности.
4. Методы объекта Event
event.preventDefault(); // 1. Отмена стандартного действия браузера
event.stopPropagation(); // 2. Остановка всплытия события
event.stopImmediatePropagation(); // 3. Полная остановка (всплытие + другие обработчики на этом элементе)
5. Специализированные события и их уникальные поля
Объект Event является базовым. Большинство реальных событий являются экземплярами более специфичных объектов, которые наследуют от Event и добавляют свои поля:
UIEvent(события пользовательского интерфейса:load,resize,scroll):
* `view` — ссылка на объект `window` (`AbstractView`).
MouseEvent(события мыши:click,mousemove,mouseover):// Пример использования свойств MouseEvent element.addEventListener('click', function(event) { console.log(`Кликнули по координатам: ${event.clientX}, ${event.clientY}`); console.log(`Нажатая кнопка: ${event.button}`); // 0 - левая, 1 - средняя, 2 - правая console.log(`Клавиши-модификаторы: Ctrl:${event.ctrlKey}, Shift:${event.shiftKey}`); });
* `clientX`, `clientY` — координаты курсора **относительно окна браузера** (viewport).
* `pageX`, `pageY` — координаты **относительно всего документа** (учитывают прокрутку).
* `button` — какая кнопка мыши была нажата (0 – левая, 1 – средняя, 2 – правая).
* `buttons` — битовая маска нажатых в данный момент кнопок мыши.
* `ctrlKey`, `shiftKey`, `altKey`, `metaKey` (булево) — состояние клавиш-модификаторов.
KeyboardEvent(события клавиатуры:keydown,keyup):
* `key` — строковое значение нажатой клавиши (например, `'a'`, `'Enter'`, `'ArrowUp'`). **Современное и рекомендованное свойство**.
* `code` — физический код клавиши на клавиатуре (например, `'KeyA'`, `'Digit1'`). Полезно для управления в играх.
* `keyCode`, `charCode` — устаревшие свойства, использование которых не рекомендуется.
* `repeat` — указывает, что клавиша зажата и событие генерируется повторно.
FocusEvent(события фокуса:focus,blur):
* `relatedTarget` — элемент, с которого или на который перешёл фокус.
Практическое значение и выводы
Понимание этих полей критически важно для:
- Делегирования событий: Использование
event.targetдля определения исходного элемента. - Отмены стандартного поведения браузера:
preventDefault()для форм, ссылок и т.д. - Контроля за распространением событий:
stopPropagation()для предотвращения всплытия и изоляции логики. - Создания сложных интерактивных интерфейсов: Работа с координатами мыши, обработка комбинаций клавиш, анализ жестов.
Запомните, что event.target — это "где произошло", а event.currentTarget (или this) — "где обрабатывается". Это различие лежит в основе эффективного управления событиями в современном фронтенд-разработке.