我们有一个使用OnBlur和OnMouseDown事件组合的Web系统。不幸的是,由于一个奇怪的原因,OnMouseDown事件处理程序在调用OnBlur事件处理程序之前被触发。
这不是我们想要的。相反,我们希望在调用onMouseDown事件处理程序之前始终调用OnBlur事件处理程序。有没有办法这样做,或许给onBlur更优先考虑?
以前,我们没有使用onMouseDown事件处理程序,而是使用了onclick事件。但是,这带来了许多问题,特别是由于JavaScript的单线程特性。
答案 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
}