首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >针对Internet Explorer的Javascript优化

针对Internet Explorer的Javascript优化
EN

Stack Overflow用户
提问于 2012-01-13 12:20:53
回答 4查看 5.7K关注 0票数 12

众所周知,与Chrome、Safari (Webkit)或Firefox (Mozilla)相比,Internet Explorer Javascript引擎在性能方面远远落后,尤其是IE8和更早的版本。

在开发具有重要javascript功能的web应用程序时,IE的性能比其他应用程序差得多。

有没有什么实践可以帮助改进你的javascript代码,好的表现者(非IE)和差的表现者(IE)之间的差距不是那么大?

EN

回答 4

Stack Overflow用户

发布于 2012-03-14 21:13:45

另有几个常见的解决方案:

缓存经常使用的DOM节点,不要在同一函数中再次重新计算它们。例如,代替

代码语言:javascript
复制
$(id).parentNode.something();
$(id).parentNode.somethingOther();

使用

代码语言:javascript
复制
var e = $(id).parentNode;
e.something();
e.somethingOther();

缓存来自外部作用域的常用对象。例如,代替

代码语言:javascript
复制
if (this.options.type == 'a') {
    // ...
} else if (this.options.type == 'b') {
    // ...
}

使用

代码语言:javascript
复制
var type = this.options.type;
if (type == 'a') {
    // ...
} else if (type == 'b') {
    // ...
}

这也将对缩小前后的代码大小产生积极的影响。

票数 2
EN

Stack Overflow用户

发布于 2012-03-09 08:17:13

优化性能的一种常见方法是在for循环中缓存“max”值。

因此,假设您必须遍历一个名为sampleArray的数组。您可以优化以下语句:

代码语言:javascript
复制
var sampleArray = [3, 10, 12, 5, 9];

for(var i = 0; i < sampleArray.length; i++){
   var currentElement = sampleArray[i];
  // so something wit element
}

通过将其更改为:

代码语言:javascript
复制
for(var i = 0, max = sampleArray.length; i < max; i++){
       var currentElement = sampleArray[i];
      // so something wit element
}

这表明在所有浏览器中都有相当大的性能提升。特别是,IE7已经证明,使用这种模式(来自High Performance Javascript)可以将性能提高190倍

票数 1
EN

Stack Overflow用户

发布于 2012-01-19 00:38:39

我认为合理的解决方案是Google Chrome Frame

这只允许在IE中使用Chrome框架,而不是在非IE浏览器中使用它。

用于IE的JavaScript性能和开发工具:

Microsoft Support: Internet Explorer Performance Article - http://support.microsoft.com/kb/982891

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8845877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档