Javascript setinterval, играющий все, когда я возвращаюсь к окну

0

У меня есть функция, применяемая к функции setInterval. Когда я сворачиваю или изменяю сфокусированное окно, а затем возвращаюсь в браузер, показывающий мой веб-сайт, браузер воспроизводит все, что произошло, так как я сфокусировал фокус на другое окно очень быстро.

Есть ли способ удержать анимацию, setintervals, когда окно фокуса в Windows меняется?

Благодарю.

  • 0
    Вы можете опубликовать код?
Теги:
browser

3 ответа

0

Я нашел этот пост: JavaScript/jQuery: проверить, имеет ли окно фокус

для меня это работало на Google Chrome, но могло случиться так, что он не работает в некоторых браузерах.

Вот скрипка для тестирования:

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);
});​
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());
0

Подобно тому, как ответ Getu.ch, за исключением этого, будет выполняться только ваш "рабочий" код, если окно имеет фокус (выполняется каждые 3 секунды). Не проверен во всех браузерах, но вот ссылка, показывающая совместимость браузера 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);

});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню