使用setInterval运行一个提供' flash'效果到列表。
如果我保持页面打开,但是访问另一个标签/在10分钟左右回来,setInterval感觉就像它每1秒工作一次,因为该功能一直被调用。
感觉像是随着时间的推移堆积起来,无论如何要解决这个问题?
function flashListItems(){
$('.imageview_navigation li').each(function(i) {
$(this).delay((i++) * 100).fadeTo(200, 0.8).fadeTo(200, 1);
});
}
setInterval(function(){
flashListItems();
}, 10000);
答案 0 :(得分:1)
您的代码没有任何问题,一些网络浏览器会减慢这些类型的间隔,从而不会导致过多的使用。因此,当不使用网页时,间隔最快的时间通常约为1秒。
可能有办法解决这个问题,这里提到:
How can I make setInterval also work when a tab is inactive in Chrome?
让你的动画功能按实际经过的时间打勾。
var div = $('#my-div');
var leftValue = 0;
var interval = (1000/20); //20fps
var before = new Date();
setInterval(function()
{
now = new Date();
var elapsedTime = (now.getTime() - before.getTime());
if(elapsedTime > interval)
{
//Recover the motion lost while inactive.
leftValue += Math.floor(elapsedTime/interval);
}
else
{
leftValue++;
}
div.css("left", leftValue);
before = new Date();
}, interval);