Ответ 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);
});
});