在我们网站的某些页面上,Javascript在IE上的运行速度非常慢。
分析似乎表明以下方法花费的时间最多:
Method count inclusive time exclusive time)
JScript - window script block 2,332 237.98 184.98
getDimensions 4 33 33
eh 213 32 32
extend 446 30 30
tt_HideSrcTagsRecurs 1,362 26 26
String.split 794 18 18
$ 717 49 17
findElements 104 184.98 14
“JScript - 窗口脚本块”有什么作用?
我们正在使用jquery和prototype。
答案 0 :(得分:3)
根据我的经验,原型的主要问题是:
$$选择器
尝试使用$ selector代替down或select。
<强>观察强>
不要使用许多观察。如果要为多个元素使用单击处理程序,请使用id和全局文档:
document.observe('click', this.clickHandler.bindAsEventListener(this));
clickHandler: function(e)
{
var elt = e.element();
while (Object.isElement(elt)) {
switch (elt.id) {
//do your stuff here
}
elt = elt.up(); //Bubbling
}
}
在IE上具有不受支持的功能的CSS选择器
此代码可以使用,但性能会降低。
<input type="checkbox"/> //HTML
$$('[type=checkbox]') //Prototype
在这种情况下,使用类名会提高性能:
<input class="checkbox" type="checkbox"/> //HTML
$$('.checkbox') //Prototype
在DOM树上搜索
需要DOM树搜索的任何其他内容。
答案 1 :(得分:2)
我知道这个问题很老,但对于任何从搜索结果中找到它的人来说都是如此。
我很确定“JScript - 窗口脚本块”是IE开发人员工具分析器的术语,用于在全局范围或匿名函数中执行的javascript。
答案 2 :(得分:1)
如果我没记错窗口脚本集团与IE的互联网安全设置阻止脚本执行有关。 “你注意到了黄色的酒吧吗?”这样的问题应该出现在页面上。
我认为这完全取决于IE中的安全区域设置。
答案 3 :(得分:1)
WebKit的SunSpider测试(涵盖 多种纯JavaScript选择 功能)。这是休息 下:
JavaScript Performance Rundown http://ejohn.org/files/js-sunspider-all.sm.png
如你所见,IE浏览器的速度很慢。
来源和更多here。
答案 4 :(得分:1)
这里没有正确答案,因为他没有做任何示例代码。
然而,首先要看的是循环中的DOM操作。无论何时你在循环中触摸DOM,它通常都是糟糕的性能,因为DOM操作非常慢。
使用JavaScript,您可以通过执行类似的操作(在此示例中使用jQuery)大大减少循环中的DOM操作:
// make a container for your DOM additions
var $div = $('<div>'),
i, list = ['a','b','c','d'],
for (i = 0; i < list.length; i++) {
$div.append( $('<span>').text(list[i]) );
}
// now you can append to the DOM once instead of in a loop
$('body').append($div);
这当然不仅仅与循环有关。它可以是一遍又一遍地调用的任何DOM操作,例如window.resize或滚动或鼠标移动或keyup等。检查你的代码在做什么并确定最慢的部分。从那里开始。