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

时间:2015-02-12 15:10:40

标签: javascript dom browser

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

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

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

2 个答案:

答案 0 :(得分:8)

事件处理程序总是按照注册顺序调用。

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


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

答案 1 :(得分:1)

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]();
    }
});