javascript - Fire JS 事件处理程序始终作为最后一个,无论添加顺序如何

标签 javascript events event-handling dom-events

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

最佳答案

一种方法是将主函数包装在 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');
})

P.s.使用许多 setTimeouts 可能会降低性能。

关于javascript - Fire JS 事件处理程序始终作为最后一个,无论添加顺序如何,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47267712/

相关文章:

javascript - 在表格中添加一行后添加分隔符

javascript - 使用d3绘制散点图

javascript - 如何在嵌入的 vimeo 视频开始播放时触发事件

java - 如何在点击图像时生成事件?

java - 检测对表单控件中文本的所有更改(由用户进行)

javascript - jQuery AJAX : return value on success

javascript - 绑定(bind)到服务函数返回的对象

c# - WPF CheckBox : Why? 的选中和未选中状态的单独事件

javascript - 如何检查是否通过 java 脚本打开浏览器搜索(使用 Ctrl+F)选项?

c# - 有没有办法在不触发 TextChanged 的​​情况下清除 TextBox 的文本?