2011-10-20 7 views
0

タブ/ウィンドウが非アクティブなときに再生を停止し、フォーカスが当たっても継続するフルサイズの背景スライダを作成しようとしています。ChromeとSafariでフォーカスを実行している関数

問題は、ChromeとSafariの両方がページの読み込み/更新時に何もしないことです。アニメーションを開始するにはウィンドウをクリックしてからウィンドウ内をクリックする必要があります。

これを避ける方法はありますか?これは、両方のブラウザ用のアニメーションを開始しますが、私は窓の外をクリックしたときに、再び、それは停止しません

$(window).load(function(){ 
    var autopager; 

    function startAutopager() { 
     autopager = window.setInterval("slideSwitch()", 5000); 
    } 

    function stopAutopager() { 
     window.clearInterval(autopager); 
    } 

    window.addEventListener('focus', startAutopager); 
    window.addEventListener('blur', stopAutopager); 

    slideSwitch(); 
    $("#sliderContent img").fullBg(); 
}); 

if(true == $.browser.safari || true == $.browser.chrome) { 
    startAutopager(); 
} 

ホープ誰かが助けることができる。これは、これまでの私のコードです

乾杯!

+0

イベントをバインドするためにjQueryのメソッドを使用しない理由はありますか?また、私はあなたがsetIntervalを使用していることに気付きました。これはドキュメンテーションで強く推奨されていません:[リンク](http://api.jquery.com/animate/)「追加の注意」を参照してください –

+0

お返事ありがとうございます!私は束縛の出来事について知らなかったが、私はそれを見てみよう。 SetIntervalはおそらく推奨されませんが、私の場合は問題ありませんか? – Manticore

+0

JSを知っているので、フォーカス/ブラーが常に適切に呼び出されるとは限りません。フォーカスが2回連続して呼び出される可能性があります...あなたのslideSwitch()関数を2回起動させる:あなたが望むよりも多くのアニメーションを「キューイング」します。完全な練習は、次のように使用することがあります: 'if(autopager)window.clearInterval(autopager);' 'autopager = window.setInterval(" slideSwitch() "、5000);' –

答えて

0

これを試してみて、どうすればいいのかコメントでお知らせください。 :)

$(function(){ 
    $("#sliderContent img").fullBg(); 

    var autopager; 
    function startAutopager() { 
    if (autopager) window.clearInterval(autopager); 
    autopager = window.setInterval("slideSwitch()", 5000); 
    } 
    function stopAutopager() { 
    window.clearInterval(autopager); 
    } 
    window.focus(startAutopager); 
    window.blur(stopAutopager); 
    startAutopager() 
}); 
+0

まずはありがとう! 私は交換しました window.focus(startAutopager); window.blur(stopAutopager); by window.addEventListener( 'focus'、startAutopager); window.addEventListener( 'blur'、stopAutopager); と今は動作するようです! – Manticore

関連する問題