setInterval
Saniyede 30 kez bir kod parçası çalışan var . Bu harika çalışıyor, ancak başka bir sekme seçtiğimde (kodumla sekme devre dışı kaldığında), setInterval
bir nedenden dolayı boşta durumuna ayarlanmış.
Bu basitleştirilmiş test senaryosunu yaptım ( http://jsfiddle.net/7f6DX/3/ ):
var $div = $('div');
var a = 0;
setInterval(function() {
a++;
$div.css("left", a)
}, 1000 / 30);
Bu kodu çalıştırıp başka bir sekmeye geçerseniz, birkaç saniye bekleyin ve geri dönün, animasyon diğer sekmeye geçtiğiniz noktada devam eder. Bu nedenle, sekmenin etkin olmaması durumunda animasyon saniyede 30 kez çalışmıyor. Bu, setInterval
işlevin her saniye kaç kez çağrıldığını sayarak doğrulanabilir - bu 30 değil, sekme etkin değilse sadece 1 veya 2 olacaktır.
Bunun performansı artırmak için tasarımla yapıldığını tahmin ediyorum, ancak bu davranışı devre dışı bırakmanın herhangi bir yolu var mı? Aslında benim senaryomda bir dezavantaj.
Date
. Böylece, aralıklar hızlı bir şekilde tetiklenmediğinde (bu veya başka nedenlerle), animasyon daha yavaş değil, daha gerginleşir.
Date
Ne zaman geçtiğini gerçekten görmek için nesneyle birlikte hacklemediyseniz, muhtemelen hayır .