Кратко
СкопированоМетод dispatch
используется для программного запуска события, чтобы другие части приложения могли отреагировать на него через обработчики.
Пример
Скопированоconst event = new Event('click')element.dispatchEvent(event)
const event = new Event('click') element.dispatchEvent(event)
Как пишется
Скопированоelement
принимает в качестве параметра такие события:
- обычное, созданное через
Event
; - пользовательское, созданное через
Custom
.Event
element
используется для инициализации event
и определяет, какие обработчики события вызвать.
Метод возвращает false
, если событие может быть отменено и один из обработчиков вызвал event
, либо true
— в остальных случаях.
Как понять
СкопированоМетод dispatch
используется для инициирования события вручную, без участия пользователя. Он принимает объект события, созданный заранее, и передаёт его на обработку системе событий. Затем вызываются обработчики, «слушающие» это событие.
Метод полезен, когда нужно программно вызвать событие. Ещё он пригодится для создания собственных событий.
const toogleMenuEvent = new CustomEvent('tooglemenuevent', { detail: { isOpen: true }})document.dispatchEvent(toogleMenuEvent)
const toogleMenuEvent = new CustomEvent('tooglemenuevent', { detail: { isOpen: true } }) document.dispatchEvent(toogleMenuEvent)
Или для имитации пользовательских действий при тестировании.
const event = new Event('click')element.dispatchEvent(event)
const event = new Event('click') element.dispatchEvent(event)
Подсказки
Скопировано💡 Отличить событие, созданное через dispatch
, от остальных можно с помощью свойства event
. Оно будет равно true
для событий, инициированных браузером, действиями пользователя или вызовами программных методов, например element
, и false
для событий, вызванных через dispatch
.
if (event.isTrusted) { console.log('Это событие вызвано браузером.')} else { console.log('Это событие вызвано через dispatchEvent.')}
if (event.isTrusted) { console.log('Это событие вызвано браузером.') } else { console.log('Это событие вызвано через dispatchEvent.') }