【发布时间】:2012-03-13 08:25:53
【问题描述】:
我注意到 Chrome 如何处理 javascript 焦点事件的一个奇怪问题。事实上,它会持续触发焦点事件,即使它只发生一次。我在这里做了一些研究,发现人们在使用 alert() 时会遇到同样的问题。当他们关闭警报窗口时,焦点会返回到他们的输入,并且处理程序会一次又一次地触发。就我而言,问题是不同的,因为我使用的是 console.log(),并且有时我会得到相同的日志 2 次甚至 3 次。我注意到它通常发生在我清除控制台然后专注于一个元素时。当我尝试重复它时,它不再发生。
场景:
- 清除控制台
- 关注元素(2 或 3 条控制台消息)
- 关注其他相同的元素或取消焦点并再次关注 一样的(没问题)
- 清除控制台
- 关注元素(2 或 3 条控制台消息 - 问题又回来了!)
我创建了一个 jsfiddle,请查看: http://jsfiddle.net/ffuWT/3/
问题是,这个问题的原因是什么,我该如何解决?
【问题讨论】:
-
运行 Chrome 17.0.963.78 m 对我来说按预期工作(不是你描述的方式)
-
我无法重现您的问题,而且我看不出在
#4中清除控制台会导致事件触发两次的问题?您是否尝试过阻止事件在您的函数中冒泡?尝试添加e.stopPropagation() -
我能够重现问题。
e.stopPropagation没有为我解决。 -
实际上,我无法重现问题。我能够创建一个类似的问题:专注于一个元素。然后 alt-tab 到另一个窗口(触发 4 个或更多焦点事件)然后 alt-tab 返回(触发 2 个或更多焦点事件)
-
@RoryMcCrossan 是的,我试过了 - 没有运气。
标签: javascript jquery google-chrome focus