最小化的Jquery setInterval

时间:2011-10-12 11:53:34

标签: jquery timer setinterval

我有图像滑块,其中图像通过超时相互替换。我使用jQuery函数setInterval()但是有一个小问题,在最小化浏览器窗口之后这个函数保持“工作”,并且我恢复浏览器窗口图像以令人难以置信的高速互相替换,就像窗口最小化后的整个时间setInterval( )收集操作,但在恢复窗口后执行它们。

如何在浏览器上暂停setInterval(),以便在窗口最小化时最小化或保留交换图像?

1 个答案:

答案 0 :(得分:4)

animate()的文档明确提及:

  

由于requestAnimationFrame()的性质,你永远不应该   使用setIntervalsetTimeout循环对动画进行排队。为了   保留CPU资源,支持requestAnimationFrame的浏览器   不显示窗口/选项卡时,不会更新动画。如果   您可以继续通过setIntervalsetTimeout对动画进行排队   动画暂停,所有排队的动画将开始播放   当窗口/标签重新获得焦点时。为了避免这个潜在的问题,   在循环中使用上一个动画的回调,或者附加一个   函数到元素.queue()以设置超时以开始下一个   动画。

因此,您可以在动画回调中调用setTimeout(),以便在可能的情况下链接下一个周期,或者queue()在调用setTimeout()之间调用animate() }}

编辑:根据评论中的要求,这是一个简单的queue()示例。下面的代码在幻灯片动画之间强制执行两秒钟的延迟:

$("selector").slideUp("slow").queue(function(next) {
    window.setTimeout(next, 2000);
}).slideDown("slow");