non*_*ame 5 javascript jquery google-chrome focus
我注意到Chrome处理javascript焦点事件的一个奇怪问题.事实是,即使它只发生一次,它也会持续触发焦点事件.我在这里做了一些研究,发现了使用alert()时人们遇到同样问题的问题.当他们关闭警报窗口时,焦点返回到他们的输入并且处理程序一次又一次地触发.在我的情况下,问题是不同的,因为我使用console.log(),并不时得到相同的日志2甚至3次.我注意到它通常发生在清除控制台时,然后专注于一个元素.当我尝试重复它时,它不再发生.
场景:
我已经创建了一个jsfiddle,请查看:http: //jsfiddle.net/ffuWT/3/
问题是,这个问题的原因是什么,我该如何解决它?
令人毛骨悚然的事情如何发生.我今天在工作中遇到了这个确切的问题,但很快就在第三方插件(jQuery customInput)中发现了怀疑狡猾的事件监听和传播.我明天会仔细检查你的jsfiddle.
我无法在我当前可用的设置(Mac上的Chrome v17)上重新创建您的确切输出,但我确实有一个理论可以分享.在你的场景和Ben Lee的评论中,一致的部分正在将焦点转移到另一个窗口(在你的情况下是控制台).
查看"Window + focusable element"下的http://www.quirksmode.org/dom/events/blurfocus.html:
如果在聚焦可聚焦元素的同时向后发送窗口,则应同时触发模糊事件.如果窗口再次向前移动,焦点事件应同时触发.
接下来,在兼容性表中注意到了这一点
Safari Windows会触发两个焦点事件.
也许Chrome终于得到了这个"功能",来自Webkit家族和所有人?
我能够重新创建问题(使用您的 jsFiddle),并且从我所看到的情况来看,只有当您单击select而不将焦点放在结果框架中时才会发生。
select在单击展开其中一个 s 之前,请在框架内单击,但不要单击selects,并且您\xc2\xb4ll 只会看到记录的一行。
您还可以附加/show到 jsFiddle URL 以在单独的窗口中查看结果。
似乎通过单击select控件来聚焦窗口会多次触发该事件。
打开此演示并取消浏览器窗口的焦点(通过单击桌面、任务栏或其他窗口),然后单击其中一个select来展开其option并查看控制台。
使用 Chrome 17.0.963.79 m。
\n| 归档时间: |
|
| 查看次数: |
3238 次 |
| 最近记录: |