jquery插件位于(与prev链接相同的路径)/js/billy.carousel.jquery.js
init文件位于(与prev链接相同的路径)/js/init.js
请...任何人都可以看到这个并回复我必须在代码中遗漏的东西吗?
Thx,Alex
答案 0 :(得分:1)
看起来插件正在排队包含setInterval()动画的函数。最新的现代浏览器已经开始实现名为requestAnimationFrame()的功能以节省资源。从本质上讲,您的动画调用正在堆叠,而其中包含旋转木马的标签失焦或隐藏。当选项卡重新获得焦点时,jQuery会同时执行它们。 jQuery建议你不要这样做。来自他们的.animate()文档:
由于requestAnimationFrame()的性质,您不应该使用setInterval或setTimeout循环对动画进行排队。为了保留CPU资源,支持requestAnimationFrame的浏览器在不显示窗口/选项卡时不会更新动画。如果在动画暂停时继续通过setInterval或setTimeout对动画进行排队,则当窗口/选项卡重新获得焦点时,所有排队的动画将开始播放。要避免这个潜在的问题,请在循环中使用上一个动画的回调,或者将函数附加到元素.queue()以设置超时以开始下一个动画。
您也可以在动画开始前用.clearQueue()清除对象的fx队列。在billy.carousel.jquery.js的第160行:
object.clearQueue().animate({'marginLeft': "0"}, option.scrollSpeed);