相关疑难解决方法(0)

JavaScript中的事件处理程序是按顺序调用的吗?

如果我将多个事件处理程序附加到单个DOM元素上的单个事件,那么事件处理程序是否保证按添加顺序调用?或者我不应该依赖这种行为?

javascript events dom event-handling dom-events

40
推荐指数
1
解决办法
1万
查看次数

多事件监听器的顺序

在使用Prototype处理点击事件时,我遇到了一个奇怪的问题.如果单击下面代码中的按钮,它将触发三个警报:"单击1","单击2"和"单击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>
Run Code Online (Sandbox Code Playgroud)

javascript prototypejs dom-events

6
推荐指数
1
解决办法
7245
查看次数