JavaScript事件处理程序竞赛

时间:2013-07-31 09:52:25

标签: javascript button textfield onblur onmouseup

如果我有一个带有已注册onblur事件处理程序的文本字段和一个带有已注册onmouseup事件处理程序的按钮,那么这两个函数中的哪一个会更快运行,为什么会这样?

为了使我的问题更清楚,我们假设焦点当前在文本字段上,我想点击按钮。

各种互联网浏览器之间会有什么区别吗?

修改

onmousedown事件在使用按钮注册时显得特别棘手,而文本字段中注册了onblur事件。

2 个答案:

答案 0 :(得分:2)

当焦点离开元素时(焦点离开之后),必须触发

The spec says blur,但是我没有看到关于何时必须发生相对于导致焦点的事件的明确声明被搬走了。

当然mouseup会在很晚之后发生(以计算机术语表示),首先你需要mousedown

我希望blurmousedown之前触发,但我错了:根据experimentationmouseup之后,mousedown 1}}之前。我使用Chrome 26,Opera 12.15,Firefox 20,IE8和IE9进行了测试 - 如果你能让这五个人就行为达成一致,那么其他人可能会保持一致...... :-)我怀疑这是因为如果您阻止mousedown的默认操作,焦点永远不会离开文本字段:Example。 (这五种浏览器的四个中的这种行为是一致的,IE8不会阻止焦点改变 - 这意味着IE7和6可能也没有。)所以虽然看起来很奇怪,但它确实有点像感。

与往常一样,使用您打算支持的浏览器进行测试。

答案 1 :(得分:-1)

启动时只需保存时间戳

var start = new Date().getTime();

然后

var elapsed = new Date().getTime() - start;

进入处理程序。