<!doctype html>
<body>
<input onblur="alert('b');">
<button onmousedown="alert('m');">a</button>
</body>
由于某种原因,blur 似乎首先在 Firefox/IE 上触发(但 mousedown 似乎首先在 Chrome/Safari 上触发)。
然而,当我们将代码更改为:
<!doctype html>
<body>
<input onblur="document.title+='b';">
<button onmousedown="document.title+='m';">a</button>
</body>
现在由于某些原因,mousedown 似乎首先对所有浏览器触发。
这种异常的解释是什么?
根据 W3C 规范,哪种行为应该是标准?
最佳答案
所以为了这个测试我做了这个 fiddle
<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>
在 Windows XPsp3 上,在 Fx5、IE8、Opera 11、Safari5、Chrome 13 中,首先是鼠标按下,然后是模糊
更新:使用警报时除外。如果您在某处放置警报,您就不能指望任何东西按您希望的方式工作。
例如,一些(较旧的)浏览器会进入一个永无止境的循环,如果您在 blur 上发出错误警报,然后尝试聚焦有问题的字段,这将模糊空的 next 字段
关于javascript - 应该首先触发 blur 还是 mousedown?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6939306/