У меня возникли проблемы с изменением хэша местоположения в 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 настолько медленный? (но ответ здесь просто "удалите его", )