Javascript 中绑定到事件的函数的执行顺序
Order of execution of functions bound to an event in Javascript
我在 javascript 中搜索有关绑定到页面事件的函数执行顺序的详细信息,例如通过 EventListener。
例如,如果我将三个函数 A()、B() 和 C() 绑定到同一个事件(比如 DOMContentLoaded),这三个函数的执行顺序是什么?
根据JS代码中addEventListener调用的先后顺序来一一对应?还是同时执行?
另外,我可以修改这个订单吗?例如,要有一个函数,绑定到 DOMContentLoaded 事件侦听器,在绑定到同一事件的任何其他函数之前执行。
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]();
}
});
事件处理程序总是按照它们注册的顺序被调用。
一旦注册,您将无法在它们之前插入额外的处理程序[*]。
[*] 除非你是一些能够获得所有处理程序及其 EventListener
对象的列表,并调用 removeEventListener
删除它们,插入你自己的,然后重新插入原件。实际上这很可能是不可能的。
我在 javascript 中搜索有关绑定到页面事件的函数执行顺序的详细信息,例如通过 EventListener。
例如,如果我将三个函数 A()、B() 和 C() 绑定到同一个事件(比如 DOMContentLoaded),这三个函数的执行顺序是什么? 根据JS代码中addEventListener调用的先后顺序来一一对应?还是同时执行?
另外,我可以修改这个订单吗?例如,要有一个函数,绑定到 DOMContentLoaded 事件侦听器,在绑定到同一事件的任何其他函数之前执行。
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]();
}
});
事件处理程序总是按照它们注册的顺序被调用。
一旦注册,您将无法在它们之前插入额外的处理程序[*]。
[*] 除非你是一些能够获得所有处理程序及其 EventListener
对象的列表,并调用 removeEventListener
删除它们,插入你自己的,然后重新插入原件。实际上这很可能是不可能的。