Javascript在IE中运行缓慢-什么是;JScript-窗口脚本块;什么意思?

Javascript在IE中运行缓慢-什么是;JScript-窗口脚本块;什么意思?,javascript,jquery,prototypejs,performance,Javascript,Jquery,Prototypejs,Performance,在我们网站的一些页面上,Javascript在IE上运行速度非常慢 分析似乎表明以下方法花费的时间最多: Method count inclusive time exclusive time) JScript - window script block 2,332 237.98 184.98 getDimensions 4 33 33 e

在我们网站的一些页面上,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。

如果我没记错的话,WindowScript bloc与IE的internet安全设置阻止脚本执行有关。“你注意到黄色条了吗?”类似的问题应该出现在页面上

我想这完全取决于IE中的安全区域设置

WebKit的遮阳板测试(包括 纯JavaScript的广泛选择 功能)。休息时间到了 向下:


(来源:)

正如您所看到的,IE在javascript上速度很慢


来源及更多。

根据我的经验,原型的主要问题如下:

$$选择器

尝试与或一起使用

观察

不要习惯于多观察。如果要为多个元素使用单击处理程序,请使用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
//HTML
$$('[type=checkbox]')//原型
在这种情况下,使用类名将提高性能:

<input class="checkbox" type="checkbox"/> //HTML
$$('.checkbox') //Prototype
//HTML
$$('.checkbox')//原型
在DOM树上搜索


任何其他需要DOM树搜索的内容。

这里没有正确的答案,因为没有任何关于他所做工作的示例代码

然而,首先要看的是循环中的DOM操作。每当您在循环中接触DOM时,这通常对性能是一个坏主意,因为DOM操作的速度是出了名的慢

使用JavaScript,您可以通过执行以下操作(在本例中使用jQuery),大大减少循环中的DOM操作:

//为DOM添加创建一个容器
变量$div=$(''),
i、 列表=['a'、'b'、'c'、'd'],
对于(i=0;i

当然,这不仅仅与循环有关。可以是反复调用的任何DOM操作,如window.resize或scroll或mouse move或keyup等。检查代码正在执行的操作,并确定最慢的部分。从这里开始。

我知道这个问题很老了,但对于通过搜索结果找到它的人来说


我很确定“JScript-window script block”是IE开发者工具档案器对在全局范围内或匿名函数中执行的javascript的术语。

jquery和prototype….不要再说了,我也有同样的问题,但只在一台('slow')计算机上:我的应用程序是jquery 1.3。你在使用
jquery.noConflict()
// 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);