在Dojo或Javascript中,如何在其他事件处理程序之前触发事件处理程序?

时间:2009-02-10 00:31:31

标签: javascript events event-handling dojo

在Dojo Javascript库中,我了解如何使用dojo.connect或dojo.publish将事件处理程序连接到事件。该功能非常有用。

但我想再做一件事。

我希望我的事件处理程序首先在任何其他已经定义的事件处理程序之前触发。我想这可以称为“事件处理程序插入”或其他东西。

有没有办法在Dojo中使用简单的Javascript方便而优雅的方式?

4 个答案:

答案 0 :(得分:1)

尝试修改您的活动:

function alertTest(){
    alert('test');
}

function alertTest2(){
    alert('test2');
}

window.onload = alertTest2; //just setting it to simulate that an event
                            //is already set

oldOnload = window.onload; //store the old event into a temporary variable
window.onload = function() { //assign a new function to the event
    alertTest(); //whatever your "must happen first" function is
    oldOnload.apply(); //run the original event after
}

答案 1 :(得分:0)

当事件被触发时,它们会连接到操作(onload,onclick)。那么在触发其他操作之前你将如何触发事件呢?

例如,如果您不知道什么时候会被触发,您会如何在onclick之前触发事件?

这绝对是你无法做的事情,也许你想要将处理程序注册到onload事件,这通常是在所有其他事件之前触发的。

答案 2 :(得分:0)

我有一个(可能)相关的问题,并使用setTimeout来设置标志。

javascript blur event -- is there any way to detect which element now has focus? 丑陋,但它确实有效。

答案 3 :(得分:0)

据我所知,一旦事件处理程序附加到DOM节点,处理程序执行的顺序依赖于实现。