2012-02-16 16 views
2

最近、高性能スクリプトに関するNicholas Zakasのビデオを見ました。これはリフローと再塗装に関するものです。操作のためのDOMの「オフサイト」コピー

:私は他のdivに「流出」溢れた内容に何をしたかた - 彼はそれは私がおよそ Transfer overflow from one div to another質問に答えなど周りに移動し、レイアウトを変更している絶えずリフロー、変更の寸法、

に悪いと言っています

  1. は、内側と外側の容器の高さを測定する(現在、私は使用jQuery.height())
  2. 内側が外側
  3. より大きい場合
  4. チェックする(NOスピル)、終了スクリプト
  5. 場合よりも少ないです大きい(流出)、最後の文字をポップする彼の次のdiv
  6. に内側容器と先頭に追加(リフロー原因 - 再計算高さ)を内側容器に戻ってテキストを配置
  7. バック1

をステップに、問題は、私は削除し、文字を追加していますで、こぼれた容器の高さを容器から出た「文字が飛び出した」ごとに測定する。反復ごとに再レンダリングされるため、時には非常に遅くなります。

DOMのJSコピーを操作して高さなどを確認する方法はありますか?私が探しているのは、そのページのクローンのようなものです。私はDOMフラグメントについて聞いたことがありますが、それはそれらをDOMに配置する前にノードのコンテナに過ぎません。

+0

あなたは '.cloneNode()'を試すことができますが、文書からノードを削除すると次元が保持されるかどうかはわかりません – Raynos

答えて

1

DOMのコピーを作成することを考えた場合、以下の方法が便利です。

これらのメソッドはDOM構造に非常に便利ですが、残念なことに次元に有用な値を返しません。

要素をレンダリングする必要があります。これは、要素を作成し、文書(ノード)を挿入することで実行できます。前述の方法をこの目的に使用することができます。ドキュメントの有効なコピーを作成し、ドキュメントをiframeに挿入します。

<base>要素を<head>に挿入すると、URLと画像が正しく解決されるので便利です。

+0

要素を構築し、イベントをバインドし、 :) – Joseph