Медленная выгрузка страницы в IE - PullRequest
3 голосов
/ 11 июня 2009

Я занимаюсь разработкой сайта, который динамически создает много строк в таблице. Общее количество строк на данный момент составляет 187. Все отлично работает при создании строк, но в IE, когда я покидаю страницу, возникает большая задержка. Я не знаю, насколько это связано с тяжелыми манипуляциями с DOM, которые я делаю на странице? Я не создаю никаких закрытий функций при построении обработчиков событий динамического контента, поэтому я не верю, что эта проблема связана с утечками памяти. Любое понимание очень ценится.

Ответы [ 4 ]

1 голос
/ 11 июня 2009

Вы создаете узлы элементов вручную или используете innerHTML? Хотя я не уверен, я подозреваю, что у IE есть свои утечки памяти, связанные с узлами HTML.

Я сделал демонстрационную страницу, которая добавляет 187 строк в таблицу с помощью jQuery. Я считаю, что jQuery.append () использует хитрый маленький трюк, чтобы превратить строку в набор узлов. Он создает div и устанавливает innerHTML этого div в вашу строку, а затем клонирует все дочерние узлы этого div в указанный вами узел, прежде чем окончательно удалить созданный div.

http://www.andrewpeace.com/stackoverflow/rows/rows.html

Я не получаю никакого отставания в IE8, но, возможно, оно будет отставать в используемой вами версии. Я бы с удовольствием, если бы вы дали мне знать! Может быть, я могу помочь еще немного.

Мир

0 голосов
/ 23 марта 2010

Я согласен с porneL. Присоедините один обработчик событий к

0 голосов
/ 14 июня 2009

Попробуйте воспользоваться всплывающей подсказкой , чтобы заменить все обработчики событий только одним.

0 голосов
/ 13 июня 2009

YUI (и, возможно, некоторые другие популярные библиотеки javascript) предоставляют автоматическую очистку слушателя , поэтому я настоятельно рекомендую использовать YUI или другую библиотеку с этой функцией, чтобы минимизировать проблемы с IE. Тем не менее, похоже, что вы испытываете медлительность, а не какую-либо проблему утечки памяти; вы прикрепляете обработчики событий к целому ряду элементов. IE6, как известно, менее чем оптимизирован, поэтому может потребоваться вечность, чтобы все очистить.

apeace также имеет хорошее замечание: innerHTML может привести к неприятностям и привести вас в странное состояние DOM. Похоже, в JQuery есть исправление.

...