我有一些代码通过DOM API(createEvent,initEvent,dispatchEvent等)触发/模拟DOM事件。对于大多数DOM事件(如点击),浏览器默认操作就像链接一样。模拟DOM事件的浏览器默认动作的执行
由于JavaScript代码执行是单线程的我不确定当我的代码在批处理中触发多个事件时执行流程如何。所以我们说我这样做(伪代码):
for (var i = 0; i < 10; i++) {
var event = document.body.createEvent('MouseEvent');
event.initMouseEvent(...);
document.body.dispatchEvent(event);
}
会发生什么?我的循环是否首先完全执行,然后处理所有事件,导致默认的浏览器操作触发并注册事件监听器来执行?或者每次调用dispatchEvent触发默认操作(以及事件侦听器)时代码执行都会中断?
感谢
事件在javascript中被阻止。每次迭代都会阻止触发事件,然后继续循环 – megawac
这是否意味着浏览器的默认操作也会立即执行? –