我想在keydown事件中添加一个事件处理程序,我希望在其他处理程序之前处理它。现在它似乎在我的addEventListener调用之后位于顶部,但在与用户进行一些交互之后,另一个javascript库的侦听器总是在它之前结束。
如果我想按下键X来执行我的监听器而没有其他人,是否有任何方法可以在javascript中执行该操作,而不是修改页面上可能添加处理程序的所有外部js?
答案 0 :(得分:1)
DOM2(addEventListener
)处理程序按照注册顺序调用。因此,只要您先注册您的,就会先调用它,并且可以使用stopPropagation
和stopImmediatePropagation
阻止其他人被调用。
然而,上述内容与具体要素有关。如果你的处理程序在一个容器元素上,并且里面的元素那个容器有一个直接连接到它的处理程序,那么在你的容器之前调用该内部元素的所有处理程序元素(这是为了冒泡;还有另一个叫做捕获的阶段,反之亦然,但几乎没有人使用它)。 [见the old DOM3 events spec(但它仍然有效)。]
因此,对于您所描述的内容,听起来您在容器元素上拥有处理程序,并且库的处理程序位于内部容器中。要在该处理程序前面,您必须首先在该特定元素上注册您的处理程序。