Javascript 在现代jQuery动画中,setInterval()和setTimeout()是不是很糟糕?
我在jQuery1.6的动画方面遇到了一些问题。我用jQuery1.5解决了这个问题 在我的项目中,我使用Javascript 在现代jQuery动画中,setInterval()和setTimeout()是不是很糟糕?,javascript,jquery,animation,Javascript,Jquery,Animation,我在jQuery1.6的动画方面遇到了一些问题。我用jQuery1.5解决了这个问题 在我的项目中,我使用setInterval()制作自定义徽标滑块。动画立即(不是同时)两个接两个地启动。当我在页面上时,一切都进行得很顺利,但当我转到其他选项卡并返回到我的页面项目时(大约两分钟后),一切都变得疯狂 好的,我得到了一个使用Queue()的答案。用这种方法我能达到同样的效果吗 我的book Manning jQuery正在运行中,使用Queue()即时启动的动画中没有任何内容 引用其中一些答案:
setInterval()
制作自定义徽标滑块。动画立即(不是同时)两个接两个地启动。当我在页面上时,一切都进行得很顺利,但当我转到其他选项卡并返回到我的页面项目时(大约两分钟后),一切都变得疯狂
好的,我得到了一个使用Queue()
的答案。用这种方法我能达到同样的效果吗
我的book Manning jQuery正在运行中,使用Queue()
即时启动的动画中没有任何内容
引用其中一些答案:
由于requestAnimationFrame()的性质,您不应该使用setInterval或setTimeout循环对动画进行排队
对于动画,通常setInterval==BAD和setTimeout==GOOD setInterval将尝试播放catchup,如nnnnnn所述: 一些浏览器可能会将所有内容排队,然后在您的 tab再次获得焦点 循环animate()的最佳方法是递归调用,例如:
var myTimeout;
var myAnimation = function () {
$('#myID').animate({
[propertyKey]:[propertyValue]
}, 5000, function() {
myTimeout = setTimeOut(myAnimation, 1000);
});
}
请注意,myTimeout是如何在myanimation的范围之外保持的,从而允许停止动画
clearTimeout(myTimeout);
你可以连接到窗口。卸载事件。我的一个页面上发生了类似的事情。我通过
.stop()
在每个间隔开始时调用所有活动动画来解决这个问题。不同的浏览器处理计时器的方式不同,当您的选项卡失去焦点时会发生什么情况,例如,一些浏览器可能会暂时挂起您的设置间隔
;有些人可能会将所有内容排队,然后在您的选项卡再次获得焦点时试图赶上进度-听起来这就是发生在您身上的事情。@nnnnnn但是使用jQuery 1.5没有问题。。。我取消了UI效果并返回到animate()
,但我怀疑这将修复和UI效果。有点,问题#9381是同一个窗口。卸载问题,但是使用setInterval()只会进一步恶化-您应该始终跟踪动画。除非你需要一个能播放接球的计时器,否则setInterval仍然是个邪恶的东西。