Предостережение: я специально не проверял это с IE7, но я достаточно уверен, основываясь на том, что я знаю о его модели манипулирования DOM.
Изменение свойств CSS (display: none
или visibility: hidden
или что-то еще) не повлияет на производительность манипулирования DOM в любой версии любого браузера, с которым я работал. Основной способ повысить скорость манипулирования DOM - это удалить узлы, с которыми вы будете работать, из дерева документов, выполнить ваши манипуляции и добавить их обратно. Это включает в себя отслеживание их последующих узлов, если таковые имеются (для использования с insertBefore
), который может стать сложным, если вы работаете с узлами, разбросанными по всему документу.
Одна техника, которую я видел, выполняя большое количество манипуляций DOM одновременно, - это получить список дочерних элементов body
, удалить их, выполнить ваши манипуляции (где бы они ни находились в дереве документа), а затем заново подключить дочерние узлы тела. В зависимости от того, сколько времени занимают ваши DOM-манипуляции (что само по себе частично зависит от скорости компьютера вашего посетителя!), Это может вызвать заметное мерцание. Вот почему сайты, манипулирующие контентом через AJAX, обычно заменяют любой временно удаленный контент на «спиннер» или загрузочный экран.