在Javascript中绑定到事件的函数的执行顺序

Car*_*rio 5 javascript browser dom

我正在搜索有关javascript中绑定到页面事件的函数执行顺序的详细信息,例如通过EventListener.

例如,如果我将三个函数A(),B()和C()绑定到同一个事件(比如DOMContentLoaded),那么这三个函数的执行顺序是什么?基于JS代码中addEventListener调用顺序的逐个?或者他们同时执行?

此外,我可以修改此订单吗?例如,要有一个绑定到DOMContentLoaded事件侦听器的函数,要在绑定到同一事件的任何其他函数之前执行.

Aln*_*tak 9

事件处理程序始终按其注册顺序调用.

注册后,您无法在其前面插入其他处理程序[*].


[*]除非你是如何获得所有处理程序及其EventListener对象的列表,并调用removeEventListener以删除它们,插入自己的,然后重新插入原件.在实践中,这可能是不可能的.

  • 在 DOM2 中,规范明确指出不保证附加到元素的处理程序的调用顺序;但 DOM3 改变了这一点,规定处理程序按照它们注册的顺序调用。 (3认同)

tha*_*guy 5

var listeners = [];

//add listeners in whatever order you want them executed

document.addEventListener("DOMContentLoaded", function(event) {
    for (var i = 0; i < listeners.length; i++) {
        listeners[i]();
    }
});
Run Code Online (Sandbox Code Playgroud)