设置HTML事件的优先级

时间:2009-09-07 13:40:41

标签: javascript dom event-handling

我们有一个使用OnBlur和OnMouseDown事件组合的Web系统。不幸的是,由于一个奇怪的原因,OnMouseDown事件处理程序在调用OnBlur事件处理程序之前被触发。

这不是我们想要的。相反,我们希望在调用onMouseDown事件处理程序之前始终调用OnBlur事件处理程序。有没有办法这样做,或许给onBlur更优先考虑?

以前,我们没有使用onMouseDown事件处理程序,而是使用了onclick事件。但是,这带来了许多问题,特别是由于JavaScript的单线程特性。

2 个答案:

答案 0 :(得分:0)

抓住event #2,点击event #1。然后让event #2通过。

..捕获和释放模式:)

答案 1 :(得分:0)

你必须使用状态变量伪造它。这有点脏,但它确实有效:doImportantStuff的肉只运行一次。

var importantStuffDone = false;
function doImportantStuff(){
     if(!importantStuffDone){
          // Do something important
          importantStuffDone = true;
     }
}

function doOnBlur(){
     // This function gets bound to the blur event
     doImportantStuff();
     // Do other blur stuff
}
function doOnMouseDown(){
     // This function gets bound to the mousedown event
     doImportantStuff();
     // Do other mousedown stuff
}