我使用以下代码对javascript中的某些过程进行动画处理:
var direction = $('#rightControl');
function animate()
{
if (hover) return;
if (!direction.is(':visible'))
{
if (direction.attr('id') == 'rightControl') direction = $('#leftControl');
else direction = $('#rightControl');
}
doMove(direction);
}
// Animate slider!
setInterval(animate, 2500);
直到页面上的元素
#rightControl
存在:每2.5秒调用一次animate()
函数并移动div(在doMove
内部)。当#rightControl
消失时,我将方向更改为#leftControl
,...一切正常,但是当页面在后台停留一段时间(例如4-5分钟)时,动画会变得疯狂,并每100-200 ms调用一次。怎么了?
最佳答案
嗯,setInterval只是每隔*秒就向调用堆栈添加一些内容。如果有几秒钟正在执行一些javascript,则调用栈中可能会堆积一些东西。如果页面也处于后台,则可能会发生这种情况。检查它是否与setTimeouts一起使用(因此1或函数调用将其启动,函数末尾为1)。
关于javascript - JavaScript中的setTimeout,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6836497/