IE7/8 JavaScript陷阱

5
我建立了一个小型的内部网页应用程序,使用了大量 Javascript。它在 Chrome 和 Firefox 中运行得很好,但一旦在 IE7/8 中加载它,界面就变得极其缓慢。它有各种 jQueryUI 组件,如拖动和可调整大小的窗格,一旦您开始点击和拖动,帧速率就会降到无法使用的领域。
在我尝试理解IE8开发人员工具之前,是否有已知的IE7/8脚本引擎问题,我可以检查我的代码中是否存在这些问题? 我看到有提到 .innerHTML() 非常慢,但我不知道是否还有其他需要注意的地方。

3
我看到有关.innerHTML()非常缓慢的参考文献。相反,将内容分配给innerHTML(它是一个属性,不是一个函数;没有())通常是向页面添加内容的最快方法,比使用createElementappendChild要快得多。这是因为解析HTML标记并将其转换为显示内容基本上就是浏览器所做的事情,它们高度优化以执行此操作。相比之下,通过DOM API进行操作需要在DOM / JavaScript边界之间进行多次传输,并且需要浏览器将内部结构映射到DOM等效结构。 - T.J. Crowder
2个回答

3

非常有用的链接,谢谢!我之前没找到这些博客文章,里面有很多好东西。 - Jon Artus

1
较旧版本的浏览器中的JavaScript引擎通常非常缓慢。大多数浏览器的最新版本都拥有更快的引擎。FireFox4、Chrome 11和IE9都非常快,而Chrome 10和Firefox 3.5之前的任何版本都很慢。不幸的是,虽然FF和Chrome会自动更新,但IE用户显然还是喜欢使用旧版本。
话虽如此,我不知道您可能寻找的任何特定缓慢功能,但我怀疑寻找它们是否会对您有所帮助。
如果您决定在速度较慢的浏览器(以及速度较慢的PC)上使用不同的动画效果,您可能会获得更多收益。您可以选择调整大小并拖动仅具有边框的空div,并在拖动后将真实的div放置在正确的位置。也许您可以尝试将其黑盒化,这样如果浏览器属于较慢的类型,甚至如果您测量到性能不佳(可能是您的用户也在使用慢硬件上的Chrome 11),浏览器就会自动切换到这种存根模式。

谢谢你的建议 - 我已经开始考虑如何在早期版本的IE中降低用户体验。我之前并没有考虑过动画,但你说得对,我可能会在IE<9中完全禁用它们! - Jon Artus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接