Window.location.hash назначение в браузере болезненно медленно - PullRequest
16 голосов
/ 13 января 2012

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

1 Ответ

16 голосов
/ 24 января 2012

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

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

- Айстина 7 мая 2009 года в 9:22

Почему я не подумала об этом раньше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...