当我回到窗口时,Javascript setinterval全部播放

时间:2013-10-03 08:47:23

标签: javascript jquery browser

我有一个应用于setInterval函数的函数。当我最小化或更改聚焦窗口时,然后返回显示我的网站的浏览器,浏览器播放自从我将焦点更改为另一个窗口后发生的所有事情,以非常快的方式。

当窗口中的焦点窗口发生变化时,有没有办法保持动画,设置间隔?

感谢。

3 个答案:

答案 0 :(得分:0)

我发现这篇文章: JavaScript / jQuery: Test if window has focus

对我而言,它适用于谷歌浏览器,但可能是因为它在某些浏览器中不起作用。

这是一个小小的测试:

http://jsfiddle.net/ScKbk/

他的回答:

var window_focus;

$(window).focus(function() {
    window_focus = true;
})

.blur(function() {
    window_focus = false;
});

$(document).one('click',function() {
   setInterval(function() { $('body').append('has focus? ' + window_focus + '<br>'); }, 1000);
});​

答案 1 :(得分:0)

试试这个。

    var handeler;
    function ShowAnimation()
{
    //SetInterval code
    handeler = SetInterval(myfunction, 1000);
}



//clear the handler when not in use.
function Clearhandler()
{
 ClearTimeout(handeler);
}



 //call the above method on the onblur event of window.
  $(window).focus(ShowAnimation(),Clearhandler());

答案 2 :(得分:0)

与Getu.ch的答案非常相似,但是如果窗口有焦点(每3秒运行一次),这只会执行你的“工作”代码。没有在所有浏览器中测试,但这里显示的是link,显示了window.focus / window.blur的浏览器兼容性

 (function($) {

     var windowHasFocus = false;

     $(window).focus(function() {
        windowHasFocus = true;
     });

     $(window).blur(function () {
        windowHasFocus = false;
     });

     setInterval(function() { 
         if(windowHasFocus) {
            //Do your work
         }
     }, 3000);

});