windows.location.hash在IE8中分配速度很慢

时间:2012-01-13 13:17:11

标签: javascript performance internet-explorer

我在修改IE8 for XP中的位置哈希时遇到了麻烦。只需致电:

self.location.hash = "whatever"

需要大约800ms~1800ms

我不知道什么可以减慢它。我在其他一些网站上检查了相同的指令,但速度并不慢。

任何可以让它变得如此缓慢的线索?对不起,我不能给出一个在线示例。


编辑: 这是我在IE控制台中获得的内容,输入:

console.log( new Date().getTime() );
self.location.hash = "sfdsd";
console.log( new Date().getTime() );

输出:

JOURNAL : 1326468325447
JOURNAL : 1326468327390
undefined

如果我读得正确的话,将近2000毫秒进行单次分配:/。


EDIT2:因为它看起来不够清晰,所以预先编写了更多的代码:

var profileThat = function() {self.location.hash = "whatever"};
$('#keywatchHeader').click( profileThat );
只需点击两下

分析器结果:

profileThat   2   3475,00 3475,00
hidden    4   50,07   50,07   http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js   6 608   
eventHandle   8   3525,07 40,06   http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js   2 595   
get   4   20,03   20,03   http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js   6 419   
get   6   10,01   10,01   http://192.168.0.30/kw5/js/yui2/dom/dom.js  96

EDIT3:

出于好奇,我对树上的节点号进行了一些测试,结果令人惊讶。经过这样的电话:

document.getElementsByTagName('*').length; //3621
$('#keywatchPanels').children().remove();
document.getElementsByTagName('*').length; //332

之后,探查者每次通话都会提供 600ms 而不是 1700ms !但我很难用节点号来影响标签写作。


(edit4):我发现了这个相关的问题:Why is this piece of Javascript code so slow?(但这里的答案只是“删除它”)

1 个答案:

答案 0 :(得分:16)

最后,我在回答相关问题的评论中找到了答案: Why is this piece of Javascript code so slow?

  

呃,刚在博客上找到了同样问题的人。显然地   如果您正在运行IE Developer Toolbar,那么这只会很慢。现在   我怎么样才能描述一下? -_-'

- Aistina 2009年5月7日9:22

为什么我不早点呢?