Internet Explorer 的 Javascript 优化
Posted
技术标签:
【中文标题】Internet Explorer 的 Javascript 优化【英文标题】:Javascript optimizations for Internet Explorer 【发布时间】:2012-02-09 09:06:21 【问题描述】:众所周知,与 Chrome、Safari (Webkit) 或 Firefox (Mozilla) 相比,Internet Explorer javascript 引擎在性能方面远远落后,尤其是 IE 8 和更早版本。
在开发具有重要 javascript 功能的 Web 应用程序时,IE 的性能比其他应用程序差得多。
是否有任何做法可以帮助改进您的 javascript 代码,从而使表现良好的人(非 IE)和表现不佳的人 (IE) 之间的差距不那么大?
【问题讨论】:
How can I optimize for IE? 的可能重复项 该问题的两个评价最高的答案与此处适用的建议几乎相同。 【参考方案1】:另外两个常见的解决方案:
缓存常用的DOM节点,不要在同一个函数中重新计算。例如。而不是
$(id).parentNode.something();
$(id).parentNode.somethingOther();
使用
var e = $(id).parentNode;
e.something();
e.somethingOther();
从外部范围缓存常用对象。例如。而不是
if (this.options.type == 'a')
// ...
else if (this.options.type == 'b')
// ...
使用
var type = this.options.type;
if (type == 'a')
// ...
else if (type == 'b')
// ...
这也会对缩小前后的代码大小产生积极影响。
【讨论】:
【参考方案2】:一种优化性能的常用方法是在 for 循环中缓存“最大值”。
所以,假设您必须遍历一个名为 sampleArray 的数组。您可以优化以下语句:
var sampleArray = [3, 10, 12, 5, 9];
for(var i = 0; i < sampleArray.length; i++)
var currentElement = sampleArray[i];
// so something wit element
通过将其更改为:
for(var i = 0, max = sampleArray.length; i < max; i++)
var currentElement = sampleArray[i];
// so something wit element
这表明所有浏览器的性能都有相当大的提升。特别是,IE7 已证明使用此模式可将性能提高 190 倍(来自High Performance Javascript)
【讨论】:
【参考方案3】:我认为合理的解决方案是Google Chrome Frame 这仅允许在 IE 中使用 Chrome Frame,而不要在 非 IE 浏览器中使用它。
用于 IE 的 JavaScript 性能和开发工具:Microsoft Support: Internet Explorer Performance Article - http://support.microsoft.com/kb/982891
【讨论】:
是的,我知道 Chrome Frame,但是,我正在寻找任何一种“最佳实践”,这将有助于开发在 IE 中运行的更快的 javascript 代码。跨度> 用于 IE 的 JavaScript 性能和开发工具:Microsoft Support: Internet Explorer Performance Article - http://support.microsoft.com/kb/982891【参考方案4】:一个。在旧版 IE 中提高性能的一种方法是使用 RAW JavaScript 而不是 jQuery 创建 DOM 元素。
示例 -
(function ()
var rosterContainer = document.getElementByID("roster");
var memberContainer = document.createElement("div");
$(memberContainer).addClass("one_fourth alpha hentry")
.attr("id", mName.replace(/\s+/g," "))
.appendTo($(rosterContainer));
)();
b.您还可以针对 IE 浏览器重新设计您的用户体验 (UX)。
示例 - 我的网站使用繁重的 JS/jquery 插件来加载大背景并将它们显示为带有 alpha 补间的幻灯片放映。但对于我的 IE 用户,我不加载 JS 或插件或背景图像 - 我只显示一个静态标题 bg。
你可以使用像 yepnope.js 这样的加载器来为 IE 加载优化的 JS
c。确保您网站的 UI 功能齐全,无需 JavaScript。这总是一个很好的起点。
【讨论】:
以上是关于Internet Explorer 的 Javascript 优化的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Internet Explorer 11 降级到 Internet Explorer 10?
为啥即使在模拟 Internet Explorer 8 文档模式时,Internet Explorer 11 也不支持条件注释?
html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持
html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持
html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持
html Internet Explorer支持使用条件注释。以下代码段在旧版Internet Explorer中添加了HTML5和CSS3支持