Pac*_*ier 7 javascript dom javascript-events
<!doctype html>
<body>
<input onblur="alert('b');">
<button onmousedown="alert('m');">a</button>
</body>
Run Code Online (Sandbox Code Playgroud)
出于某种原因,模糊似乎首先在FF/IE上闪现(但是mousedown似乎首先针对Chrome/Safari开火).
然而,当我们将代码更改为:
<!doctype html>
<body>
<input onblur="document.title+='b';">
<button onmousedown="document.title+='m';">a</button>
</body>
Run Code Online (Sandbox Code Playgroud)
现在出于某种原因,mousedown似乎首先针对所有浏览器启动.
1)这种异常可能是什么原因?
2)基于W3C规范,哪些应该是标准行为?
mpl*_*jan 10
所以对于这个测试,我做了这个小提琴
<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>
Run Code Online (Sandbox Code Playgroud)
在Windows XPsp3上,在Fx5,IE8,Opera 11,Safari5,Chrome 13中,它首先全部被mousedown,模糊之后
更新:除了使用警报时.如果你在某个地方发出警报,你就不能指望任何你希望他们工作的方式.
例如,一些(较旧的)浏览器会进入一个永无止境的循环,如果你警告错误onblur然后尝试聚焦有问题的字段,这将模糊空的下一个字段
哦天哪,这是一个永无止境的故事。我不想知道我花了多少时间来正确理解这种行为。正如您提到的,它的行为不同,所以实际上没有“正确”。然而,我不太了解关于这个特定实例的 W3C 规范(如果真的有一个?),但要知道,您必须创建一些逻辑才能以正确的顺序触发事物。这真是太恶心了。