【发布时间】:2011-11-18 01:12:36
【问题描述】:
我开发了一个小脚本,使用 jQuery 和 animate() 函数使文本看起来像是来自远方。 我有两个主要问题。第一个在这里描述: Jquery font size animation problem in Chrome, too laggy
第二个是我需要循环动画。我的方法效果很好,但是在 FireFox 中,它已经实现了一种资源节省机制,当 broser 的选项卡窗口在后台时,它会让事情变得很奇怪。
我很确定这个问题是已知的,并关注您可以在 Jquery doc 上为 animate() 阅读的内容:
由于 requestAnimationFrame() 的性质,您不应该使用 setInterval 或 setTimeout 循环对动画进行排队。为了节省 CPU 资源,支持 requestAnimationFrame 的浏览器在窗口/标签不显示时不会更新动画。如果您在动画暂停时继续通过 setInterval 或 setTimeout 对动画进行排队,则所有排队的动画将在窗口/选项卡重新获得焦点时开始播放。为避免此潜在问题,请使用循环中上一个动画的回调,或将函数附加到元素 .queue() 以设置超时以启动下一个动画。
...但我不明白如何将解决方案应用于我的脚本。
您可以在这里测试和使用代码:http://jsbin.com/ehahoc/7/
只需打开一个选项卡上的代码,然后从另一个网站打开另一个选项卡,并让我的脚本在后台运行的选项卡保持 30 秒,然后返回代码选项卡,您会看到所有段落现在没有协调或同步。
非常感谢!
【问题讨论】:
-
好吧,你真的不能让它更顺畅。这看起来像一些英雄区域或广告类型的动画。对于这种情况,您应该使用 flash 或 GIF。但是,我可能在上下文上是错误的。尽管如此,至于你的例子......你永远无法像闪光灯一样流畅。
-
你可以使用像nuvutype.nrcstudios.info这样的jquery插件来成为你想要的样子
-
我需要把它作为一个带有透明胶片的覆盖层......这就是我没有使用闪存的原因,也是为了让它在不使用闪存的设备上可用。我知道 Flash 更流畅,但我对 IE9 和 FF 中的结果感到满意,Chrome 和 IE8 是问题
标签: jquery firefox tabs jquery-animate setinterval