Firefox 7.0.1上的Jquery动画滞后

时间:2011-11-22 13:18:27

标签: jquery firefox animation smooth

有谁知道为什么这个非常简单的jquery动画在Chrome等浏览器中完美运行,似乎在Firefox 7.0.1中被窃听? 这是动画的a link。 如果你在Firefox中尝试它,你会发现动画有时会冻结然后重新启动。 正如您所看到的,代码非常简单,只有一个动画,没有图像和内联CSS。

HTML:

<div id="content" style="position: relative;width: 500px;height: 500px;overflow: hidden;">
    <ul id="slider" style="position: absolute;top:0;left:0;">
        <li style="background-color: red;height: 500px;width: 500px;list-style-type: none;"></li>
        <li style="background-color: green;height: 500px;width: 500px;list-style-type: none;"></li>
        <li style="background-color: blue;height: 500px;width: 500px;list-style-type: none;"></li>
    </ul>
</div>

JS:

$(document).ready(function () {
    to_move=$('#slider');
    to_move.animate({
       top: "-1000px"
    }, 15000,'linear');
});

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

你所看到的是Firefox的垃圾收集器每隔一段时间就开始发挥作用。

通过Dave Mandelin's blog

  

如果您不熟悉GC的背景:作为JavaScript   程序运行,它创建对象,数组,字符串和函数,   占用记忆。为了不用尽所有的记忆和   崩溃,JS引擎必须能够自动发现哪个   对象不再使用(因此它们现在是“垃圾”)并且是免费的   他们了这个“自动内存回收”子系统被称为   垃圾收集器,或GC。)

     

暂停的原因是SpiderMonkey使用的是旧式学校   停止世界的标记和扫描收集器

计划对Firefox的GC进行大幅改进但尚未实施 - 请参阅该链接以获取更多信息。

答案 1 :(得分:0)

我不太了解jquery的内部工作原理,但我认为它正在为该div使用resize事件。 Firefox处理调整大小的事件很糟糕,我不确定是否有办法解决它。以下是一些更多信息:http://www.quirksmode.org/dom/events/resize.html