|
1
46
如果您可以先注册处理程序,那么在注册之前,只要您使用的浏览器正确地实现了dom3事件(除非是ie8或更早版本,否则它可能会实现)。 这里至少涉及四件事:
整齐: 1。防止违约
这是什么
防止违约可能与您正在做的事情无关,但因为您正在使用
2。停止传播到祖先元素
dom0处理程序无法执行此操作。DOM2一个可以,通过
但是
(我的重点。) 三。停止上的其他处理程序 相同的 被调用的元素当然,dom0不会出现这种情况,因为 是 同一元素上同一事件的其他处理程序。-)
据我所知,在dom2中没有办法这样做,但是dom3给了我们
一些库为通过库连接的处理程序提供此功能(甚至在非dom3系统(如ie8)上),请参见下文。 4。调用处理程序的顺序同样,与dom0无关,因为不可能有其他处理程序。 在dom2中,规范 明确地 表示不保证调用附加到元素的处理程序的顺序;但是dom3改变了这个顺序,表示处理程序是按照它们注册的顺序调用的。 首先,来自DOM2 Section 1.2.1 :
但这已经被DOM3取代了 Section 3.1 :
(我的重点。) 如果您将事件与库挂钩,则某些库可以保证顺序。
值得注意的是,在微软dom2的前身中(例如,
所以把3和4放在一起,如果你可以先注册你的处理程序,它将首先被调用,你可以使用
所有这些(包括ie8和更早版本甚至都没有实现dom2事件,更不用说dom3)是人们使用jquery等库的原因之一,其中一些确实保证了顺序(只要所有东西都通过相关的库连接它们的处理程序),并且提供了一些方法来阻止同一个元素上的其他处理程序被调用。(例如,对于jquery,order是它们附加的顺序,您可以使用
|
|
OREO · 如何在不实际单击复选框的情况下选中它 2 年前 |
|
|
Dan · 在元素外部设置html点击处理程序点击后立即触发 2 年前 |
|
|
Mero · Svelte在父事件调用上调用新的嵌套事件处理程序 2 年前 |
|
|
iorice · usercontrol dll中的组件事件 2 年前 |
|
|
Awin · 点击事件功能不适用于Vue组件 2 年前 |
|
|
Kiwi · 将可共享的自定义数据添加到事件MS图形api 2 年前 |