«Вне сайта» копия DOM для выполнения манипуляций - PullRequest
2 голосов
/ 17 февраля 2012

Недавно я смотрел видео Николаса Закаса, рассказывающего о сценариях высокой производительности. Это про перекраску и перекраску. он говорит, что плохо постоянно перекомпоновывать, что перемещается и меняет макет, изменяет размеры и т. д.

я ответил на вопрос о Переполнение при передаче из одного div в другое - что я сделал, чтобы «пролить» переполненный контент на другой div:

  1. измерить высоту внутреннего и внешнего контейнера (в настоящее время я использую jQuery.height ())
  2. проверить, больше ли внутренний, чем внешний
  3. если меньше (без разлива), конец сценария
  4. если больше (разлив), вытолкнуть последний символ во внутренний контейнер и перейти к следующему div
  5. положить текст обратно во внутренний контейнер (вызывая оплавление - пересчет высоты)
  6. вернуться к шагу 1

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

есть ли способ иметь JS-копию DOM для манипулирования, проверки высоты и т. Д.? то, что я ищу, похоже на клон страницы. я слышал о фрагментах DOM, но это просто контейнер для узлов перед помещением их в DOM.

1 Ответ

1 голос
/ 17 февраля 2012

Когда вы думаете о создании копии DOM, могут быть полезны следующие методы:

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

Элементы должны быть визуализированы.Это можно сделать, создав элемент <iframe> и вставив в него документ (узлы).Для этой цели можно использовать ранее упомянутые методы: создать эффективную копию (часть) документа и вставить документ в iframe.

Может быть полезно также вставить <base>* Элемент * в <head>, поэтому URL-адреса и изображения корректно разрешаются.

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