javascript - 浏览器事件默认操作 - 有规范吗?

标签 javascript dom dom-events specifications preventdefault

一些events有默认操作。例如 - 单击复选框将选中/取消选中它。这可以通过 event.preventDefault() 来防止。方法。

在寻找 errorEvent 默认操作时,我找不到任何有关事件默认操作的文档或规范 - 不仅针对 errorEvent,而且针对任何事件。根据DOM spec - Constructing events scetion

As of the time of this writing Web IDL does not yet define any default behavior; see whatwg/webidl#135.

除此之外,我找不到任何有关此类规范进展的明确或最新信息。 是否有可能此类规范尚未最终确定,因此不同浏览器的默认操作可能有所不同?或者我错过了什么?

更新:

我的问题不够清楚 - 显然,一个事件对于不同的上下文可以有不同的默认操作(例如,复选框输入的单击事件将与文本输入的单击事件具有不同的默认操作)

感谢 @kaiido 的详细回答,我找到了我正在寻找的规范(专门针对 DOM UI 事件)- UI Events section 4.1 List of Event Types

最佳答案

每种事件类型都没有真正的“默认操作”,因此,您不会找到“点击”事件的默认操作,也不会找到“错误”事件的默认操作。
发生的情况是,在各个地方,定义了在一个事件(注意小写的“e”)之后,应该发生一些事情,其中,可能会调度一个Event,然后可能其他的,基于 canceled flag已分派(dispatch)的事件的名称。

如果您想查看规范,那么DOM specifications定义当 an event is being dispatched ,用户代理必须检查已分派(dispatch)事件的取消标志,如果它仍未设置,则必须运行 activation behavior目标(步骤 11.1)。
激活行为是其他规范将定义的,因此对应于您正在寻找的“默认行为”。
请注意UI Events还使用不同的术语来详细描述相同的行为。

此外,许多规范可能有自己的方式来定义此行为,例如 WebGL's contextlost event 直接定义了在事件被取消的情况下应该发生什么,而没有定义激活行为,这在 WebGL 上下文中没有多大意义。

因此,没有一个地方可以定义所有此类“可预防”操作。每个规范都可以定义其中的许多内容。
浏览器的互操作性得以保留,因为它们遵循定义这些规范的每个规范。

可能有趣的是,尽管您的复选框示例实际上是一个局外人,因为由于奇怪的历史原因,切换 .checked 属性的默认操作是在分派(dispatch)事件之前完成的,并且事件被分派(dispatch)后,如果事件被取消,它将恢复到初始状态。

关于javascript - 浏览器事件默认操作 - 有规范吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70292067/

相关文章:

javascript - 在 CompositeView 中传递时 ItemView 的 DOM 位置 - Marionette

javascript - 为一个点添加事件监听器

javascript - 如何向多个元素添加EventListener和以element为参数的函数?

javascript - 在 Firefox 中的链接上调度 'mouseover' 事件

Angularjs DOM 已刷新,但屏幕未重绘。不知道从这里去哪里

javascript - 当一个或多个函数完成时调用一个函数

带有 eventListener 的 Javascript 代码不适用于视频按钮控制系统

javascript - 客户端应该使用http post还是socket.io将文件上传到我的nodejs服务器?

javascript - DOM 元素删除 click 事件后 dblclick 事件发生变化

javascript - 为什么我无法切换 for 语句中每个元素(组内)的可见性,而只能切换组中的最后一个元素?