JavaScript 事件处理程序在元素上单独触发的事件的执行顺序,其中两个元素都不是另一个的祖先

问题描述 投票:0回答:2

有这个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();

我想知道警报将以什么顺序显示 - 是按事件触发的顺序

click()
还是随机的?

我问的是记录/标准化的行为,而不是浏览器当前实现的内容。

javascript events dom-events standards
2个回答
3
投票

警报将按顺序执行 -

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

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');

将产生与

相同的结果
alert('1');
alert('2');
alert('3');

-1
投票

我会是1,然后是2。 http://jsfiddle.net/kkYfX/

© www.soinside.com 2019 - 2024. All rights reserved.