如果我有一个带有已注册事件处理程序的文本字段和一个带有已注册onblur
事件处理程序的按钮,那么onmouseup
这两个函数中的哪一个会更快运行,为什么?
为了让我的问题更清楚,让我们假设焦点当前在文本字段上,我想点击按钮。
各种互联网浏览器之间会有什么区别吗?
编辑
使用按钮注册的事件似乎特别棘手onmousedown
,而文本字段则onblur
注册了一个事件。
如果我有一个带有已注册事件处理程序的文本字段和一个带有已注册onblur
事件处理程序的按钮,那么onmouseup
这两个函数中的哪一个会更快运行,为什么?
为了让我的问题更清楚,让我们假设焦点当前在文本字段上,我想点击按钮。
各种互联网浏览器之间会有什么区别吗?
编辑
使用按钮注册的事件似乎特别棘手onmousedown
,而文本字段则onblur
注册了一个事件。
规范说 blur
必须在焦点离开元素时触发(在将焦点移开之后),但我没有看到任何关于何时必须相对于导致焦点移开的事件发生的明确声明。
当然,这mouseup
会发生得更晚(在计算机方面),因为首先你必须mousedown
.
我blur
什至预计会在 之前开火mousedown
,但我错了:根据实验,mouseup
在之后,但mousedown
在之前。我使用 Chrome 26、Opera 12.15、Firefox 20、IE8 和 IE9 进行了测试——如果你能让这五个人就一种行为达成一致,那么其他人的行为可能会保持一致...... :-) 我怀疑这是因为如果您阻止 的默认操作mousedown
,焦点永远不会离开文本字段:Example。(这种行为在这五个浏览器中的四个中是一致的,IE8 不会阻止焦点更改——这意味着 IE7 和 6 可能也不会。)所以虽然看起来很奇怪,但它确实有点道理。
与往常一样,使用您打算支持的浏览器进行测试。
只需保存启动时的时间戳
var start = new Date().getTime();
进而
var elapsed = new Date().getTime() - start;
进入处理程序。