Почему $(document).blur() и $(document).focus() не работают с Safari или Chrome?

Я делаю счетчик, который отсчитывает, когда документ находится в фокусе. Он перестает отсчитывать, когда он размывается.

Он работает в FF, но с Safari и Chrome счетчик не работает вообще.

Есть ли проблема совместимости с Safari/Chrome?

Все, что я использую, это $(document).blur() и $(document).focus(), и они находятся внутри блока $(document).ready().

var tm;
$(document).ready(function(){   

        var seconds = 50;
        $('#timer').html(seconds);
        countdown();

    $(window).focus(function(){
         function countdown(){ 
         if (seconds > 0) {
            seconds--; 
            $('#timer').text(seconds);
            tm = setTimeout(countdown,1000);
            }
        if (seconds<=0){ 
            $('#timer').text('Go');
            }   
        }); 



    $(window).blur(function(){
        clearTimeout(tm);
        seconds++;
        $('#timer').text(seconds);

    });
});

Ответ 1

Я всегда использовал $(window).focus() и $(window).blur(). Попробуйте вместо этого.

Также обратите внимание, что в FF и IE событие "focus" запускается при загрузке документа, а в Chrome и Safari он запускается только в том случае, если окно потеряло фокус раньше и теперь оно восстановило его.

UPD: Теперь, когда вы вставили свой код, я переработал его (надеюсь), чтобы соответствовать вашей цели:

var tm;
var seconds = 50;
var inFocus = true;

function countdown() {
    if (seconds > 0) {
        seconds--;
    }

    if (seconds <= 0) {
        $('#timer').text('Go');
    }
    else {
        $('#timer').text(seconds);
        tm = setTimeout(countdown, 1000);
    }
}

$(function() {
    $('#timer').html(seconds);
    countdown();

    $(window).focus(function() {
         if(!inFocus) {
             countdown();
         }
    });

    $(window).blur(function() {
        inFocus = false;
        clearTimeout(tm);
        seconds++;
        $('#timer').text(seconds);
    });
});