我使用以下代码对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/

10-12 13:51