【问题标题】:IE7/8 Javascript GotchasIE7/8 Javascript 陷阱
【发布时间】:2016-05-24 05:12:36
【问题描述】:

我已经构建了一个小的单页 Intranet 应用程序,该应用程序非常繁重 Javascript。它在 Chrome 和 Firefox 中运行良好,但是一旦你在 IE7/8 中加载它,界面就会变得非常缓慢。它具有各种 jQueryUI 小部件,例如可拖动和可调整大小的窗格,一旦您开始单击和拖动,帧速率就会下降到无法使用的区域。

在我尝试理解 IE8 开发人员工具之前,我可以在我的代码中检查 IE7/8 脚本引擎中是否有任何已知的陷阱?我看到对.innerHTML() 的引用非常慢,但我不知道是否还有其他我应该寻找的东西。

【问题讨论】:

  • “我看到对.innerHTML() 的引用非常慢” 相反,分配给innerHTML(这是一个属性 , 不是函数;没有 ()) 通常是向页面添加内容的最快方式,比使用 createElementappendChild 快得多。这是因为解析 HTML 标记并将其转换为显示的内容基本上是浏览器所做的,并且它们经过高度优化可以做到这一点。相比之下,通过 DOM API 工作需要多次跨越 DOM/JavaScript 边界,并且需要浏览器将内部结构映射到 DOM 等价物。

标签: javascript jquery internet-explorer jquery-ui


【解决方案1】:
【解决方案2】:

旧版浏览器中的 Javascript 引擎通常非常慢。只有大多数浏览器的最新版本才有更快的引擎。 FireFox4、Chrome 11 和 IE9 都非常快,而 Chrome 10 和 Firefox 3.5 之前的任何东西也很慢。不幸的是,虽然 FF en Chrome 会自动更新(接近),但 IE 用户显然有一种坚持旧版本的冲动。

也就是说,我不知道您可能会寻找任何特定的慢速功能,但我怀疑它是否会帮助您寻找它们。

如果您决定在较慢的浏览器(以及较慢的 PC)上使用不同的动画,您可能会获得更多收益。您可以选择调整大小并拖动仅带有边框的空 div,并在拖动后将真实 div 放置在正确的位置。也许您可以尝试对此进行黑盒处理,因此如果浏览器速度较慢,或者即使您测量到性能不佳(可能是您的用户也在慢速硬件上使用 Chrome 11),浏览器也会自动切换到这种存根模式。

【讨论】:

  • 谢谢你 - 我已经开始考虑降低早期版本 IE 体验的方法。我也没有真正考虑过动画,但你是对的,我可能会在 IE 中完全禁用它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2015-09-18
  • 1970-01-01
相关资源
最近更新 更多