Кратко
СкопированоМетод 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.')
}