在使用Prototype处理点击事件时,我遇到了一个奇怪的问题。如果你点击下面代码中的按钮,它将触发三个警报:'Click 1'、'Click 2'和'Click 3'。现代浏览器将按照注册顺序调用侦听器,而IE8(以及可能早期版本的IE)将按相反的顺序调用侦听器。我认为这很奇怪,因为我认为Prototype会维护和执行侦听器队列,这应该是与浏览器无关的。这种情况不是这样吗?如果不是,那么事件监听器是否应按某种顺序运行,还是它们是异步的,因此其顺序无关紧要?
<button id="button">Click me</button>
<script type="text/javascript">
$('button').observe('click', function(event) {
alert('Click 1');
});
$('button').observe('click', function(event) {
alert('Click 2');
});
$('button').observe('click', function(event) {
alert('Click 3');
});
</script>