0

カルーセルを作成し、JavaScriptsetInterval()関数を使用してカルーセルで一定間隔で画像を回転させました。これが私が使用したスクリプトです

var timeOut = 4000;

function showSlide() {
       //....script for showing image
}

function pauseSlide() {

   setInterval(function(){showSlide();}, timeOut);

}

jQuery(document).ready(function() {
        pauseSlide();
});

問題は、ブラウザのタブを変更して数分後に再びカルーセル ブラウザに戻り、カルーセルがデフォルトの時間間隔よりも速く実行されているのを見たときです。どうすればこれを整理できるか教えてください。

4

3 に答える 3

4

別の間隔を開始する前に最初の間隔を取り除く必要があります。そうしないと、複数の間隔が同時に機能し始めます (つまり、「より速く」進むのが見え始める理由)。

これを行う

var timeOut = 4000;
var interval = 0;

function showSlide() {
       //....script for showing image
}

function pauseSlide() {

   clearInterval(interval);
   interval =  setInterval(function(){showSlide();}, timeOut);

}

jQuery(document).ready(function() {
    //NOW you can do multiple pauseSlide() calls
     pauseSlide();
     pauseSlide();
     pauseSlide();
     pauseSlide();
     pauseSlide();
});
于 2012-09-04T15:06:18.050 に答える
1

FirefoxとChromeの両方の新しいバージョンで私が知っていることから、パフォーマンスを向上させるために、バックグラウンドタブのsetTimeoutとsetIntervalが1000msにクランプされています。ですから、あなたの問題はそれに関連しているのではないかと思います。

たぶんこれは役立つでしょう:Chromeでタブが非アクティブのときにsetIntervalも機能させるにはどうすればよいですか?

于 2012-09-04T15:07:03.710 に答える
0

画像が予想よりも速く変化する場合は、pauseSlide() を何らかの方法で複数回呼び出していることを示している可能性があります。

あなたが関数を呼び出す唯一の場所ですかdocument ready?ショースライドまたはドキュメント準備完了イベントをトリガーするコードはありますか? を入れた場合、複数回ポップアップしますかalert()?pauseSlide()

于 2012-09-04T15:08:28.107 に答える