XHTML厳密モードを使用するようにアプリケーションを変換中です(以前はDOCTYPEがありませんでした)。ただし、offsetHeight / offsetWidthを取得すると、大幅な低下が見られました。これは、多数のDOM要素を含むページで非常に顕著です。たとえば、1列×800行のテーブルの場合、セルには1つのテキストしかありません。そのテーブル内の各子孫要素にアクセスしてオフセットディメンションを取得するのは、IEがページをQuirksモードでレンダリングする場合よりもはるかに遅くなります。なぜそうなのですか?IEがそれらのoffsetValuesを計算するのに役立つヒントを知っている人はいますか?
2 に答える
IE に、癖ではなく標準モードでページを表示させることをお勧めします。これは、HTML ドキュメントの head にメタ タグを追加するか、Web サーバーをセットアップして X-UA-Compatible ヘッダーを追加することで実行できます。
<meta http-equiv="X-UA-Compatible" content="IE=8;FF=3;OtherUA=4" />
また、jquery、prototype、yui などの組み込みの JavaScript フレームワークを使用します。それらのほとんどは、さまざまなレンダリング エンジンの問題に既に対処しています。
@bobince: 私が信じている問題は、リフローに関するものです。私の JavaScript のロジックは、子が絶対レイアウト コンテナー内で (私が予測できない動的コンテンツを取得するため) 互いにオーバーラップしているかどうかを把握しようとし、次にシフトする必要がある親の css のサイズと兄弟の css を調整します。css のサイズを変更するとリフローが発生し、これは反復の途中で発生します。このシナリオは、非常に大きなテーブルの IE8 Quirks よりも IE8 標準の方がはるかに遅いようです。この種の操作を行うときは documentFragment を非表示にするか使用する必要があることはわかっていますが、物を移動してから新しいオフセット ディメンションを確認する必要があるため、不正確な値が得られました。