IE 8中的jquery scrollTop性能

5 javascript jquery internet-explorer-8 internet-explorer-7

我正在使用jQuery .scrollTop在div中滚动图像.它在Firefox中运行良好 - 滚动非常流畅和快速.在IE 8中,滚动非常缓慢且出现故障 - 图像在大约一秒钟内滚动一次 - 两秒钟.图像大小平均在2000*2000和4000*4000像素之间.

有没有办法改进IE 8的这个?

IE 7的性能略好一些,但仍然不够好.

谢谢

编辑:我认为问题在于如何在IE 7和8中实现滚动.我已经启用了两个滚动条(overflow-x和overflow-y),并且我尝试使用这些滚动条滚动图像.问题完全一样.我试过在功能相当不足的PC上运行 - 奔腾双核几年,2 GB RAM以及Core i7台式机,2.8GHz CPU 1600Mhz RAM,结果几乎相同.FireFox滚动速度更快,但其CPU使用率平均比IE CPU使用率高10%.这让我感到困惑......到目前为止,微软肯定会解决这个问题吗?

我发现另一件有点奇怪的事情是在Core 2 Duo笔记本电脑上滚动速度更快.我想知道这是否与显卡驱动程序有关... IE 7/8甚至可以使用GPU吗?

对不起,如果这听起来很傻,但我真的很有兴趣解决这个问题... IE不能那么糟糕..

Mar*_*sen 6

jQuery .scrollTop()是众所周知的慢,即如果标记甚至稍微复杂或大,你将永远不会让它表现良好.

解决的办法是不使用jQuery的.scrollTop()功能,但建立自己的基础上,本机属性.scrollHeight.scrollTop.

原因是计算偏移量的方式,这是jquery .scrollTop()缓慢的基础- 你必须走上DOM树并计算ie中每个父项的偏移量.

jQuery尽其所能,但你总是能够更快地完成它,因为你事先知道标记并且可以优化它 - 你甚至可以在大多数时间提前进行偏移计算,只需使用常量作为修饰符.

所有这一切,这可能不是jQuery的错 - 它可能只是ie渲染管道的问题 - 取决于你如何制作你的marklup和样式,滚动可能强制即完全重新渲染/重绘每个像素的页面你滚动,这将减慢所有爬行.