window.location.hash assignation painfully slow in IE8

У меня проблемы с изменением хэша местоположения в IE8 для XP. простой вызов:

self.location.hash = "whatever"

занимает около 800мс~1800мс

Я понятия не имею, что может замедлить это. Я проверил ту же инструкцию на некоторых других сайтах, и она не настолько медленная.

Есть идеи, что может сделать это так медленно? Извините, но я не могу привести онлайн пример.


EDIT: Вот что я получаю в консоли IE, input:

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

output:

JOURNAL : 1326468325447
JOURNAL : 1326468327390
undefined

что составляет почти 2000ms, если я правильно прочитал, для одного назначения :/ .


EDIT2: поскольку это не кажется достаточно ясным, больше преофилированного кода:

var profileThat = function() {self.location.hash = "whatever"};
$('#keywatchHeader').click( profileThat );

результаты профилирования двумя кликами:

profileThat 2 3475,00 3475,00
скрытый 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 
получить 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):Я нашел этот связанный вопрос: Почему этот кусок кода Javascript такой медленный? (но ответ здесь просто "удалите его")

16
задан Community 23 May 2017 в 10:24
поделиться