是否有窗口获取焦点的浏览器事件?

有没有办法,当我点击我的浏览器,并让它集中注意力,运行一次方法? 然后当浏览器失去焦点然后再次获得焦点时再次运行该方法一次。

您可以在window对象上附加focusblur事件处理程序,以跟踪窗口是否获得焦点(请参阅http://jsfiddle.net/whQFz/以获取一个简单的示例)。 window适用于当前浏览器上下文(因此可以是窗口,选项卡,框架等)。

注意: focus事件将在每次窗口获得焦点时触发,并且每次失去焦点时blur事件都将触发。 将焦点从窗口移开的一个示例是alert窗口。 如果您尝试在onfocus事件处理程序中发出警报,您将获得无限循环的警报!

 // Set global counter variable to verify event instances var nCounter = 0; // Set up event handler to produce text for the window focus event window.addEventListener("focus", function(event) { document.getElementById('message').innerHTML = "window has focus " + nIndex; nCounter = nCounter + 1; }, false); // Example of the blur event as opposed to focus // window.addEventListener("blur", function(event) { // document.getElementById('message').innerHTML = "window lost focus"; }, // false); 
 $(document).ready(function() { $(window).one("focus", SomeFocusMethod); } ); var SomeFocusMethod = function() { // do stuff $(window).one("blur", SomeBlurMethod); } var SomeBlurMethod = function() { // do stuff $(window).one("focus", SomeFocusMethod); } 

如果您的目标浏览器比IE9更新,您应该使用“页面可见性API”javascript浏览器api: https : //developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API