Javascript 应该先模糊还是鼠标向下开火? A.

Javascript 应该先模糊还是鼠标向下开火? A.,javascript,dom,javascript-events,Javascript,Dom,Javascript Events,出于某种原因,模糊似乎首先在FF/IE上启动(但对于Chrome/Safari,mousedown似乎首先启动) 然而,当我们将代码更改为: <!doctype html> <body> <input onblur="alert('b');"> <button onmousedown="alert('m');">a</button> </body> A. 现在出于某种原因,mousedown似乎是所有浏览器的首选 1)

出于某种原因,模糊似乎首先在FF/IE上启动(但对于Chrome/Safari,mousedown似乎首先启动)

然而,当我们将代码更改为:

<!doctype html>
<body>
<input onblur="alert('b');">
<button onmousedown="alert('m');">a</button>
</body>

A.
现在出于某种原因,mousedown似乎是所有浏览器的首选

1) 这种异常现象的原因是什么


2) 基于W3C规范,哪一个应该是标准行为?

哦,天哪,这是一个永恒的故事。我不想知道我花了多少时间来正确理解这种行为。正如你提到的,它的行为不同,所以实际上没有“正确的”。然而,我并不太了解W3C规范中关于这个特定实例的内容(如果真的有一个实例的话?),但是要知道,您必须创建一些逻辑,以便按照正确的顺序启动。这太恶心了。

所以我做了这个测试


A.
---
在Windows XPsp3、Fx5、IE8、Opera 11、Safari5、Chrome 13中,都是先鼠标向下,然后模糊

更新:使用警报时除外。如果你把警报放在某个地方,你就不能指望任何东西能按你所希望的方式工作


例如,如果您在blur上发出错误警报,然后尝试聚焦有问题的字段,这将模糊空的下一个字段,则某些(较旧的)浏览器将进入永无止境的循环

您通常使用的解决方案是什么?我使用的是flag+setTimeout,一种方式,但感觉真的很糟糕。我也一样。但是你如何解释IE和FF中问题中显示的代码的异常?该警报触发模糊的速度比鼠标向下的速度快?当你发出警报时,所有赌注都将被取消。是的,警报触发模糊的速度比鼠标下移的速度快。对你来说也是如此
<!doctype html>
<body>
<input onblur="document.title+='b';">
<button onmousedown="document.title+='m';">a</button>
</body>
<input onblur="document.getElementById('msg').innerHTML+=new Date().getTime()+' - blur<br/>'">
<button onmousedown="document.getElementById('msg').innerHTML+=new Date().getTime()+' - md<br/>'">a</button>
<div id="msg">---<br/></div>