3

有谁知道为什么这个非常简单的 jquery 动画在某些浏览器(如 Chrome)中完美运行,并且似乎在 Firefox 7.0.1 中存在错误?这是动画的链接。如果您在 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');
});

谢谢你的帮助。

4

2 回答 2

2

您所看到的是 Firefox 的垃圾收集器每隔一段时间就会启动。

通过戴夫曼德林的博客

如果您不熟悉 GC 的背景知识:当 JavaScript 程序运行时,它会创建占用内存的对象、数组、字符串和函数。为了不耗尽所有内存并导致崩溃,JS 引擎必须能够自动发现哪些对象不再使用(因此它们现在是“垃圾”)并释放它们。这种“自动内存回收”子系统称为垃圾收集器或 GC。)

暂停的原因是 SpiderMonkey 使用了一个老式的 stop-the-world 标记和清除收集器

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

于 2011-11-22T13:49:48.907 回答
0

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

于 2011-11-22T13:59:00.220 回答