代码之家  ›  专栏  ›  技术社区  ›  Rod

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

  •  37
  • Rod  · 技术社区  · 15 年前

    有没有一种方法,当我点击我的浏览器,给它焦点,运行一次方法?然后,当浏览器失去焦点,然后使焦点返回到再次运行该方法时,只需一次又一次。

    3 回复  |  直到 7 年前
        1
  •  59
  •   Brett Weber    8 年前

    您可以附加 focus blur 上的事件处理程序 window 当窗口获得或失去焦点时要跟踪的对象(请参见 http://jsfiddle.net/whQFz/ 举个小例子)。 窗口 应用于当前浏览器上下文(因此可能是窗口、选项卡、框架等)。

    注: 这个 集中 每次窗口获得焦点和 模糊 事件每次失去焦点时都会触发。将焦点从窗口移开的一个例子是 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);
    
        2
  •  15
  •   Brett Weber    8 年前
    $(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); 
    }
    
        3
  •  6
  •   Pylinux    11 年前

    如果目标浏览器的版本高于IE9,则应使用“页面可见性API”javascript浏览器API: https://developer.mozilla.org/en-US/docs/Web/Guide/User_experience/Using_the_Page_Visibility_API