我刚刚注意到了一个关于焦点事件的小问题。显然,当切换到另一个浏览器标签页然后再切回来时,焦点会被激活。我不想让这种情况发生,有可能吗?
直到今天,我才注意到这一点。这里有一个小演示:http://jsfiddle.net/MJ6qb/1/
var times = 0;
$('input').on('focus', function() {
times ++;
$(this).after('<br>Focused '+times+' times');
});
复现方法:先将焦点放在输入框中,然后切换浏览器选项卡,然后再切回来。所有浏览器似乎都会在切回选项卡时触发焦点事件,而且Google Chrome 19会触发两次!
理想情况下,函数应该根本不会在切换浏览器选项卡时运行,只有在用户单击或按下 Tab 时才运行,但现在我意识到Chrome的问题后,我对此有些更担心了,因为它会导致我真实应用程序中不必要的连续 AJAX 请求(这是为了获取自动完成结果,需要保持最新状态,但不需要使用 keyup 事件那么频繁)。
看起来这与 jQuery 无关(我尝试过原生 JavaScript),但我可以使用 jQuery 来解决。我能做些什么吗?我知道可以使用 jQuery 的 one()
方法,但我确实希望函数可以运行多次。