Переключение window.location.hash болезненно медленное в IE8 - программирование
Подтвердить что ты не робот

Переключение window.location.hash болезненно медленное в IE8

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

self.location.hash = "whatever"

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

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

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


EDIT: Здесь Что я получаю в консоли 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:

Я провел несколько тестов на node на дереве из любопытства, и результаты удивили. После такого вызова:

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

после этого профайлер дает 600 мс вместо 1700 мс за звонок! Но я вряд ли с номером node повлиял бы на запись хэштага.


(edit4): Я нашел этот связанный с ним вопрос: Почему этот фрагмент кода Javascript настолько медленный? (но ответ здесь просто "удалите его", )

4b9b3361

Ответ 1

Наконец, я нашел свой ответ в комментарии ответа на связанный вопрос: Почему этот фрагмент кода Javascript настолько медленный?

Ух, просто нашел кого-то в блоге с той же проблемой. По всей видимости это только медленно, если вы используете панель инструментов IE Developer. Теперь как я собираюсь профиль? -_- '

- Aistina 7 мая 2009 в 9:22

Почему раньше я не об этом говорил?