Как найти замедление в Javascript в IE6 - PullRequest
4 голосов
/ 19 ноября 2008

Что-то замедляет мой код Javascript в IE6, где заметно зависание при наведении курсора. В FF все нормально, поэтому использование firebug не так уж полезно. Какие инструменты существуют, чтобы помочь отладить это в IE?

Немного больше информации: Я не думаю, что на самом деле есть какие-то JS, работающие на объектах, над которыми я коплю. (По крайней мере, ничего из того, что я вставил.) Просто css: hover. Кроме того, у меня есть и jquery, и dojo, работающие над проектом, так что кто знает, что они делают в фоновом режиме.

Ответы [ 6 ]

4 голосов
/ 19 ноября 2008

Что я обычно делаю, это:

var startTime = new Date();
// Lots of heavy code here
console.log("Processing time: ", new Date() - startTime, " ms");

Вы можете получить Firebug lite , чтобы заставить console.log работать в разных браузерах. Это дает вам представление о том, сколько времени занимает выполнение любого данного раздела вашего кода.

Как только вы узнаете, какой раздел является ошибочным, вы можете изучить варианты его исправления.

4 голосов
/ 19 ноября 2008

Просто вершина того, чем может быть это «что-то» ...

Конкатенация строк в IE является (или, по крайней мере, была, когда я протестировал ) очень медленной. Опера завершила работу через 0,2 с, Firefox после 4,1 с, а Internet Explorer 7 все еще не завершился через 20 минут !!!

Не делай:

for (var i=0, i < 200; i++) { s = s + "something";}

Вместо этого временно используйте массив, а затем присоединитесь к нему:

var s=[];
for (var i=0; i < 200; i++) s.push("something");
s=s.join("");
1 голос
/ 19 ноября 2008

Microsoft Script Debugger , также см. IEBlog для подсказок

0 голосов
/ 22 ноября 2008

Я думаю, что нашел источник замедления для всех, кому интересно: я использую bgiframe , чтобы решить проблему z-индекса в IE6 select box ( обсуждается в другом месте SO).

0 голосов
/ 19 ноября 2008

Учитывая быстрый Firefox и медленный IE, выражения xpath и обработчики событий (убедитесь, что вы получаете правильное количество вызовов, а не в 10 раз больше ожидаемой суммы) - это хорошие места для вставки таймеров вручную.

0 голосов
/ 19 ноября 2008

Задержка также может быть из-за обновления DOM. Когда IE нужно перерисовать страницу из-за изменения DOM, это может быть заметно медленнее, чем Firefox. Обычно, когда это происходит, курсор останавливается.

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