Event

Baseline 已广泛支持

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

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

Event 接口代表在 EventTarget 上发生的事件。

事件可以由用户操作触发,例如点击鼠标按钮或按下键盘,也可以由 API 生成以表示异步任务的进度。它还可以通过编程方式触发,例如通过调用元素的 HTMLElement.click() 方法,或者通过定义事件,然后使用 EventTarget.dispatchEvent() 将其发送到指定的 target。

事件有很多类型,其中一些使用基于主 Event 接口的其他接口。Event 本身包含所有事件共有的属性和方法。

许多 DOM 元素可以设置为接受(或“监听”)这些事件,并执行代码来处理(或“响应”)它们。事件处理程序通常使用 EventTarget.addEventListener() 连接(或“附加”)到各种 HTML 元素(例如 <button><div><span> 等),这通常取代了使用旧的 HTML 事件处理属性。此外,如果正确添加,这些处理程序也可以使用 removeEventListener() 在需要时断开连接。

注意:一个元素可以有多个此类处理程序,即使是针对完全相同的事件——特别是如果独立的代码模块分别附加了它们,各自用于其独立的用途。(例如,一个网页中有一个广告模块和一个统计模块都在监控视频观看。)

当存在许多嵌套的元素,每个元素都有自己的处理程序时,事件处理可能会变得非常复杂——尤其是在父元素接收与其子元素相同的事件,因为它们在“空间上”重叠,事件实际上发生在两者中,并且此类事件的处理顺序取决于每个触发的处理程序的 事件冒泡 设置。

基于 Event 的接口

以下是基于主 Event 接口的接口列表,并链接到 MDN API 参考中的相应文档。

请注意,所有事件接口的名称都以“Event”结尾。

构造函数

Event()

创建一个 Event 对象,并将其返回给调用者。

实例属性

Event.bubbles 只读

一个布尔值,指示事件是否会通过 DOM 冒泡。

Event.cancelable 只读

一个布尔值,指示事件是否可取消。

Event.composed 只读

一个布尔值,指示事件是否可以在 Shadow DOM 和普通 DOM 之间的边界上传播。

Event.currentTarget 只读

对当前注册的事件 target 的引用。这是事件当前预定要发送到的对象。在重新定向过程中,此对象可能已被更改。

Event.defaultPrevented 只读

指示是否通过调用 event.preventDefault() 取消了事件。

Event.eventPhase 只读

指示正在处理事件流的哪个阶段。它是以下数字之一:NONECAPTURING_PHASEAT_TARGETBUBBLING_PHASE

Event.isTrusted 只读

指示事件是由浏览器(例如,在用户单击后)还是由脚本(例如,使用事件创建方法)发起的。

Event.srcElement 只读 已弃用

Event.target 属性的别名。请使用 Event.target

Event.target 只读

对事件最初分派到的对象的引用。

Event.timeStamp 只读

事件创建时的时间(以毫秒为单位)。根据规范,此值是自纪元以来的时间——但实际上,浏览器的定义各不相同。此外,目前正在努力将其更改为 DOMHighResTimeStamp

Event.type 只读

标识事件类型的名称。

旧版和非标准属性

Event.cancelBubble 已弃用

Event.stopPropagation() 的历史别名,应使用该方法替代。在事件处理程序返回之前将其值设置为 true 会阻止事件的传播。

Event.explicitOriginalTarget 非标准 只读

事件的显式原始 target。

Event.originalTarget 非标准 只读

事件的原始 target,在任何重新定向之前。

Event.returnValue 已弃用

为确保现有网站继续正常工作而仍然支持的历史属性。请使用 Event.preventDefault()Event.defaultPrevented

Event.scoped 只读 已弃用

一个布尔值,指示给定事件是否会通过 shadow root 冒泡到标准 DOM。请使用 composed

实例方法

Event.composedPath()

返回事件的路径(将为其调用侦听器的对象数组)。如果 shadow root 是以其 ShadowRoot.mode closed 创建的,则不包括 shadow tree 中的节点。

Event.preventDefault()

取消事件(如果事件可取消)。

Event.stopImmediatePropagation()

对于此特定事件,阻止调用任何其他侦听器。这包括附加到同一元素的侦听器以及附加到稍后(例如,在捕获阶段)将遍历的元素的侦听器。

Event.stopPropagation()

停止事件在 DOM 中的进一步传播。

已废弃的方法

Event.initEvent() 已弃用

初始化创建的 Event 的值。如果事件已分派,则此方法无效。请使用构造函数(Event())进行替代。

规范

规范
DOM
# interface-event

浏览器兼容性

另见