JavaScript事件处理程序执行顺序

Mar*_*ota 7 javascript events standards javascript-events

有这个JS代码:

document.getElementById('e1').addEventListener('click', function(){alert('1');}, false);
document.getElementById('e2').addEventListener('click', function(){alert('2');}, false);
document.getElementById('e1').click();
document.getElementById('e2').click();
Run Code Online (Sandbox Code Playgroud)

我想知道警报会以什么顺序显示 - 它是按事件触发的顺序click()还是随机的?

我问的是有关记录/标准化的行为,而不是关于当前实现的浏览器.

Mar*_*ota 3

警报将按顺序执行 -1然后2。这是因为click事件是同步的(请参见此处) - 当事件发出时,处理程序将立即运行(请参见此处的.click()最后一段)。所以这段代码:

document.getElementById('e1').addEventListener('click', function(){alert('1');}, false);
document.getElementById('e2').addEventListener('click', function(){alert('2');}, false);
document.getElementById('e1').click();
document.getElementById('e2').click();
alert('3');
Run Code Online (Sandbox Code Playgroud)

将产生相同的结果

alert('1');
alert('2');
alert('3');
Run Code Online (Sandbox Code Playgroud)