Объект события Event
Объект Event описывает событие, произошедшее на странице. Одной из причин возникновения событий являются действия пользователя, такие как клики мышкой Mouse Event или ввод с клавиатуры Keyboard Event . Существует множество различных событий с разным набором информации.
Обратите внимание на обзорную статью о событиях. В ней описываются примеры работы с событиями.
Пример
Скопировать ссылку «Пример» Скопировано
Самый простой и широко распространённый способ использования событий — это отслеживание срабатывания кликов по каким-либо элементам на странице.
При подписке на событие мы передаём обработчик, который будет вызван при каждом срабатывании события в браузере. В случае, когда происходит событие типа click , обработчик будет вызван с событием Mouse Event :
element.addEventListener('click', function (event) console.log(event)>)
element.addEventListener('click', function (event) console.log(event) >)
Как пишется
Скопировать ссылку «Как пишется» Скопировано
В этом материале мы рассматриваем базовый объект события, каждое событие может содержать дополнительные свойства в зависимости от его типа, но список ниже есть у всех.
Свойства
Скопировать ссылку «Свойства» Скопировано
- bubbles — является ли данное событие всплывающим.
- cancelable — является ли событие отменяемым.
- current Target — указывает на элемент, на котором установлен обработчик события.
- default Prevented — отменено ли поведение события по умолчанию.
- event Phase — указывает на фазу срабатывания события.
- is Trusted — указывает на происхождение события, будет в значении true , если событие инициировано действиями пользователя. false — если событие инициировано из кода с помощью dispatch Event ( ) .
- target — ссылка на объект, которым было инициировано событие. Например, если событие произошло на поле ввода, мы получим ссылку на этот DOM элемент.
- time Stamp — время возникновения события в миллисекундах.
- type — тип события.
Методы
Скопировать ссылку «Методы» Скопировано
- composed Path ( ) — вернёт массив элементов, на которых сработает событие.
- prevent Default ( ) — предотвращает дефолтное поведение события. Если вызвать этот метод на событии клика по ссылке, то переход по ссылке не произойдёт, но событие продолжит всплытие.
- stop Propagation ( ) — предотвращает всплытие события.
- stop Immediate Propagation ( ) — делает то же самое, что и stop Propagation , но в том числе предотвращает вызов обработчиков события, которые были установлены на этом же элементе.
Обработчики событий, установленные на элемент, вызываются по порядку их установки.
Как понять
Скопировать ссылку «Как понять» Скопировано
Работа JavaScript основана на событийной модели — это значит, что для того, чтобы запустить какой-либо код, должно произойти событие. Даже код, который был написан в файле и не привязан к какому-либо событию, будет обработан после того, как произойдёт событие, которое сообщит браузеру, что код был загружен.
Событие может быть создано по следующим причинам:
Примеры
Скопировать ссылку «Примеры» Скопировано
Системное событие
Скопировать ссылку «Системное событие» Скопировано
Системное событие инициируется DOM-окружением и является отражением какого-то события, произошедшего в операционной системе. Например, событие, что пользователь находится онлайн. То есть на наличие активного интернет-соединения.
Мы можем отслеживать состояние интернет-соединения и показывать сообщение, если оно пропало.
window.addEventListener('offline', function() alert('Отсутствует подключение к интернету')>)
window.addEventListener('offline', function() alert('Отсутствует подключение к интернету') >)
Программное событие
Скопировать ссылку «Программное событие» Скопировано
Событие может быть создано с помощью кода, поле is Trusted в таком событии будет содержать значение false , а значит, мы будем знать, что событие было вызвано не системно и не пользователем.
Создадим своё событие и вызовем его на window :
const myEvent = new CustomEvent('my-event', detail: spicy: 123, >,>) window.addEventListener('my-event', function(evt) console.log('В поле spicy:', evt.detail.spicy)>) window.dispatchEvent(myEvent)
const myEvent = new CustomEvent('my-event', detail: spicy: 123, >, >) window.addEventListener('my-event', function(evt) console.log('В поле spicy:', evt.detail.spicy) >) window.dispatchEvent(myEvent)
На практике
Скопировать ссылку «На практике» Скопировано
Павел Минеев советует
Скопировать ссылку «Павел Минеев советует» Скопировано
🛠 В событии есть два похожих поля: target и current Target . Их отличие легко увидеть на примере.
Моя кнопочка
button class="button" type="button"> span>Моя кнопочкаspan> button>
document.querySelector('.button').addEventListener('click', function (event) console.log('Событие инициировано на', event.target) console.log('Событие поймано на', event.currentTarget)>)
document.querySelector('.button').addEventListener('click', function (event) console.log('Событие инициировано на', event.target) console.log('Событие поймано на', event.currentTarget) >)
current Target всегда будет элементом, к которому привязан обработчик, то есть элементом, на котором вызывался add Event Listener ( ) .
target — это элемент, на котором произошло событие. Оно может не совпадать с current Target , потому что большинство событий всплывают.