【发布时间】:2013-12-13 03:02:34
【问题描述】:
我有一些代码通过 DOM API(createEvent、initEvent、dispatchEvent 等)触发/模拟 DOM 事件。对于大多数 DOM 事件(例如单击),有一个浏览器默认操作,例如跟随链接。
由于 JavaScript 代码执行是单线程的,我不确定当我的代码批量触发多个事件时执行流程如何。所以假设我这样做(伪代码):
for (var i = 0; i < 10; i++) {
var event = document.body.createEvent('MouseEvent');
event.initMouseEvent(...);
document.body.dispatchEvent(event);
}
会发生什么?我的循环是否首先完全执行,然后处理所有事件,导致默认浏览器操作触发并注册事件侦听器执行?还是每次调用dispatchEvent触发默认动作(和事件监听器)时代码执行中断?
谢谢
【问题讨论】:
-
事件在 javascript 中被阻塞。每次迭代都会阻塞触发事件,然后继续循环
-
这是否意味着浏览器默认动作也会立即执行?
标签: javascript events dom