2010-07-17 5 views
5

Мне нужно сделать тяжелые манипуляции с DOM на весь документ веб-страниц в надстройке, которую я пишу. Я хотел бы свести к минимуму переходы, так что только одно обновление происходит для всех моих манипуляций. Удаление элемента тела, выполнение манипуляций и последующая вставка его снова не является опцией, потому что это переоценивает все элементы <script>. В настоящее время я устанавливаю видимость тела до 'none' перед манипуляциями и восстанавливает значение отображения после. Я не уверен, что это лучший способ справиться с этим.Есть ли способ приостановить оплату во время тяжелых манипуляций с DOM?

Есть ли лучший способ? Конечно, это может быть специальный код Firefox. В конце концов, это дополнение к Firefox.

+0

Вы просто добавляете материал или делаете кучу модификаций? – sdwilsh

+0

я заменить все узлы #text, которые не пробельных только с кучей элементов: 'Foo бар baz' ->' Foo бар Баз ' Я делаю это так, я могу получить точное положение каждого слова (после того, как я манипулировал всеми элементами). – panzi

ответ

1

Gecko на самом деле довольно хорошо подавляет ненужные изменения самостоятельно (т. Е. Вам может быть лучше не возиться с ним), за исключением случаев, когда между различными изменениями вы делаете, вы также запрашиваете информацию что требует, чтобы макет был актуальным (например, позиции или размеры элементов, getComputedStyle и т. д.)