--- title: EventTarget.dispatchEvent slug: Web/API/EventTarget/dispatchEvent tags: - API - DOM - events translation_of: Web/API/EventTarget/dispatchEvent ---
{{APIRef("DOM Events")}}
向一个指定的事件目标派发一个事件, 并以合适的顺序同步调用目标元素相关的事件处理函数。标准事件处理规则(包括事件捕获和可选的冒泡过程)同样适用于通过手动的使用dispatchEvent()
方法派发的事件。
cancelled = !target.dispatchEvent(event)
event
是要被派发的事件对象。target
被用来初始化 事件 和 决定将会触发 目标.false
;否则返回true
。如果该被派发的事件的事件类型(event's type)在方法调用之前没有被经过初始化被指定,就会抛出一个 UNSPECIFIED_EVENT_TYPE_ERR
异常,或者如果事件类型是null
或一个空字符串. event handler 就会抛出未捕获的异常; 这些 event handlers 运行在一个嵌套的调用栈中: 他们会阻塞调用直到他们处理完毕,但是异常不会冒泡。
与浏览器原生事件不同,原生事件是由DOM派发的,并通过event loop异步调用事件处理程序,而dispatchEvent()
则是同步调用事件处理程序。在调用dispatchEvent()
后,所有监听该事件的事件处理程序将在代码继续前执行并返回。
dispatchEvent()
是create-init-dispatch过程的最后一步,用于将事件调度到实现的事件模型中。可以使用Event构造函数来创建事件。
另请参阅 Event object reference.
参考 Creating and triggering events.
Specification | Status | Comment |
---|---|---|
{{SpecName('DOM WHATWG', '#dom-eventtarget-dispatchevent', 'EventTarget.dispatchEvent()')}} | {{ Spec2('DOM WHATWG') }} | Initial definition in the DOM 2 Events specification. |
{{Compat("api.EventTarget.dispatchEvent")}}