2012-04-25 38 views
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); 

    }); 
}); 

答えて

11

私はいつも$(window).focus()$(window).blur()を使用しました。代わりにこれらを試してください。

また、「フォーカス」イベントは〜ドキュメントの読み込みで発生しますが、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); 
    }); 
}); 
+0

こんにちは、ご回答いただきありがとうございます。私はあなたの方法を試しました。それは第2の焦点のためだけに働く。しかし、カウンタは(ウィンドウ).focus()では開始しません。より多くのコードが必要になっても、それを解決する方法はありますか?ありがとうございます – alexx0186

+0

私はすでにChromeの最初の焦点を数えない理由を説明しました。クロスブラウザソリューションで私の答えを更新しました。 –

+0

あなたのソリューションに感謝します。私はちょうど私がif文に入れるべきものを理解していませんでした。 '// count = 1;'と '// count ++;'の違いは何ですか?あなたの助けをたくさんあります。よろしくお願いします。 – alexx0186

関連する問題