У меня проблемы с изменением хэша местоположения в IE8 для XP.просто вызов:
self.location.hash = "whatever"
занимает около 800 мс ~ 1800 мс
Я понятия не имею, что может замедлить это.Я проверил ту же инструкцию на некоторых других сайтах, и она не такая медленная.
Есть какие-нибудь подсказки, что может сделать ее такой медленной?Извините, но я не могу привести пример в Интернете.
РЕДАКТИРОВАТЬ: Вот что я получаю в консоли IE, введите:
console.log( new Date().getTime() );
self.location.hash = "sfdsd";
console.log( new Date().getTime() );
вывод:
JOURNAL : 1326468325447
JOURNAL : 1326468327390
undefined
, что составляет почти 2000 мс, если я правильно прочитал, для одного присваивания: /.
EDIT2: так как это не кажется достаточно ясным, более предварительно скомпилированный код:
*Результаты профилировщика 1021 *
отображаются двумя щелчками мыши:
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
, после этого профилировщик выдает 600 мс вместо 1700 мс за вызов!Но я вряд ли с номером узла мог бы повлиять на запись хештега.
(edit4): я нашел этот связанный вопрос: Почему этот фрагмент кода Javascript такой медленный? (ноответ здесь просто "удали его")