2010-07-17 2 views
5

내가 작성한 애드온에서 웹 페이지의 전체 문서에 대한 무거운 DOM 조작이 필요합니다. 리플 로우를 최소화하여 모든 조작에 대해 리플 로우가 한 번만 발생하도록하고 싶습니다. body 요소를 제거하고 조작을 수행 한 다음 다시 삽입하면 모든 <script> 요소가 다시 계산되므로 옵션을 사용할 수 없습니다. 현재 나는 시체의 시정을 조작 전에 'none'으로 설정하고 이후의 표시 값을 복원합니다. 그래도이 문제를 해결하는 가장 좋은 방법인지 잘 모르겠습니다.무거운 DOM 조작 중에 리플 로우를 일시 중단 할 수있는 방법이 있습니까?

더 좋은 방법이 있습니까? 물론 Firefox 특정 코드 일 수 있습니다. 결국 그것은 Firefox Add-On입니다.

+0

변경 사항을 추가하고 있습니까? – sdwilsh

+0

나는 요소의 무리와 공백 만되지 않은 모든하는 #text 노드 대체 :'foo는 줄을 baz' ->' foo는 바즈' 나는 내가 정확한 위치를 얻을 수있는이 작업을 수행 모든 단어의 (모든 요소를 ​​조작 한 후에). – panzi

답변

1

게코 (Gecko)는 실제로 많은 수정 작업 사이에서 정보를 요구할 때를 제외하고는 불필요한 수정을 자체적으로 억제하는 데 꽤 효과적입니다. (요소 위치 나 크기, getComputedStyle 등) 레이아웃이 필요합니다.

관련 문제