EventTarget: dispatchEvent() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

注意:此功能在 Web Workers 中可用。

EventTargetdispatchEvent() 方法会将一个 Event 对象发送到该对象,(同步地)按照正确的顺序调用受影响的事件监听器。手动使用 dispatchEvent() 派发的事件也同样遵循常规事件处理规则(包括捕获阶段和冒泡阶段)。

调用 dispatchEvent()触发事件的最后一步。事件应该已经使用 Event() 构造函数创建并初始化。

注意: 调用此方法时,Event.target 属性将被设置为当前的 EventTarget

与由浏览器触发并异步地通过 事件循环 调用事件处理程序的“原生”事件不同,dispatchEvent()同步地调用事件处理程序的。所有适用的事件处理程序都会被调用并返回,然后 dispatchEvent() 才会返回。

语法

js
dispatchEvent(event)

参数

event

要派发的 Event 对象。它的 Event.target 属性将被设置为当前的 EventTarget

返回值

如果 event 是可取消的,并且至少有一个接收到 event 的事件处理程序调用了 Event.preventDefault(),则返回 false。否则返回 true

异常

InvalidStateError DomException

如果在事件初始化期间未指定事件类型,则抛出此异常。

警告: 事件处理程序中抛出的异常会被报告为未捕获的异常。事件处理程序在嵌套的调用栈中运行;它们会阻塞调用者直到完成,但异常不会传播到调用者。

示例

请参阅 创建和派发事件

规范

规范
DOM
# ref-for-dom-eventtarget-dispatchevent③

浏览器兼容性

另见