Javascript 事件侦听器指向第一个调用的同一事件目标
如果我将两个事件侦听器注册到同一事件目标。将首先调用哪个事件处理程序 例如:Javascript 事件侦听器指向第一个调用的同一事件目标,javascript,dom,javascript-events,event-handling,Javascript,Dom,Javascript Events,Event Handling,如果我将两个事件侦听器注册到同一事件目标。将首先调用哪个事件处理程序 例如: document.addEventListener("click", function() { // do something 1 }, true); // using the capturing phase document.addEventListener("click", function() { // do something 2 }, true); // using the capturin
document.addEventListener("click", function() {
// do something 1
}, true); // using the capturing phase
document.addEventListener("click", function() {
// do something 2
}, true); // using the capturing phase
我在w3c规范中没有找到我的答案
回答问题时增加了粗体强调(通过w3c规范:) 首先,实施必须确定当前目标。这必须是部分传播路径中的下一个挂起事件目标,从第一个开始。从事件侦听器的角度来看,这必须是侦听器已注册的事件目标 接下来,实现必须确定当前目标的候选事件侦听器。这必须是按注册顺序在当前目标上注册的所有事件侦听器的列表。[HTML5]定义通过事件处理程序属性注册的侦听器的顺序。一旦确定,不得更改候选事件侦听器;添加或删除侦听器不会影响当前目标的候选事件侦听器 最后,实现必须按顺序处理所有候选事件处理程序,并在满足以下所有条件时触发每个处理程序 我个人一直依赖这种行为,我没有看到现代浏览器的行为与规范描述的不同。在不同的浏览器中尝试它可能会重复,Google Chrome和Firefox似乎是按添加侦听器的顺序添加的。说明:“已按注册顺序在当前目标上注册的所有事件侦听器的列表”和“实现必须按顺序处理所有候选事件处理程序”。