4

ドキュメントにフォーカスがあるときにカウントダウンするカウンターを作成しています。ぼかし中はカウントダウンが止まります。

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);

    });
});
4

1 に答える 1

13

私はずっと と を使ってきまし$(window).focus()$(window).blur()。代わりにこれらを試してください。

また、FF と IE では「フォーカス」イベントはドキュメントの読み込み時に発生することに注意してください。一方、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);
    });
});
于 2012-04-25T23:21:39.087 に答える