我有图像滑块,其中图像通过超时相互替换。我使用jQuery函数setInterval()但是有一个小问题,在最小化浏览器窗口之后这个函数保持“工作”,并且我恢复浏览器窗口图像以令人难以置信的高速互相替换,就像窗口最小化后的整个时间setInterval( )收集操作,但在恢复窗口后执行它们。
如何在浏览器上暂停setInterval(),以便在窗口最小化时最小化或保留交换图像?
答案 0 :(得分:4)
animate()的文档明确提及:
由于requestAnimationFrame()的性质,你永远不应该 使用
setInterval
或setTimeout
循环对动画进行排队。为了 保留CPU资源,支持requestAnimationFrame
的浏览器 不显示窗口/选项卡时,不会更新动画。如果 您可以继续通过setInterval
或setTimeout
对动画进行排队 动画暂停,所有排队的动画将开始播放 当窗口/标签重新获得焦点时。为了避免这个潜在的问题, 在循环中使用上一个动画的回调,或者附加一个 函数到元素.queue()以设置超时以开始下一个 动画。
因此,您可以在动画回调中调用setTimeout()
,以便在可能的情况下链接下一个周期,或者queue()
在调用setTimeout()
之间调用animate()
}}
编辑:根据评论中的要求,这是一个简单的queue()
示例。下面的代码在幻灯片动画之间强制执行两秒钟的延迟:
$("selector").slideUp("slow").queue(function(next) {
window.setTimeout(next, 2000);
}).slideDown("slow");