【问题标题】:Fire JS event handler always as the last one, regardless of adding orderFire JS 事件处理程序始终作为最后一个,无论添加顺序如何
【发布时间】:2017-11-13 15:21:40
【问题描述】:

有没有办法强制 JS 中的事件处理程序总是作为最后一个触发?假设我知道将来会出现一些新的事件处理程序,但我想确保每个新的处理程序都会在我的特殊处理程序之前被触发。

【问题讨论】:

    标签: javascript events event-handling dom-events


    【解决方案1】:

    一种方法是将您的 main 函数包装在 setTimeout 函数中并传递 0 延迟,因此 Javascript 引擎会将其添加到其函数堆栈并最后执行该函数。

    document.getElementById("div1").addEventListener('click', function(e) {
        setTimeout(function(){
        console.log('MAIN Event');
      },0);
    })
    document.getElementById("div1").addEventListener('click', function(e) {
        console.log('dosmth2');
    }) 
    document.getElementById("div1").addEventListener('click', function(e) {
        console.log('dosmth3asd');
    })
    

    附:使用许多 setTimeouts 可能会降低性能。

    【讨论】:

    • 谢谢,这正是我想要的 :)
    • 很高兴听到,祝你好运!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多