Jintrick.netagenda2001年09月アーカイブ → 2001年09月14日

Mozillaの要素生成速度の問題について

Leonard Cohen (英語)のアルバムをなくしてしまい、危うく発狂するところだった。幸い見つかったので正気を保っています(無関係)。


どうやら、Mozillaにて要素生成処理が異常に遅くなるのは、絶対配置(position : absolute, position : fixed)が大きく関係しているらしい。例えば、div等の親要素を生成した直後にstyleプロパティを弄って絶対配置にすると、この問題が起きる。

var nDiv = document.createElement('DIV');
nDiv.style.position = 'fixed';

ところが、子要素を全て生成し終わってから、同様の処理をした場合には、この問題は起らなかった。

var nDiv = document.createElement('DIV');
document.body.appendChild(nDiv);
var nDL = document.createElement('DL');
nDiv.appendChild(nDL);
--------------------------
nDiv.style.position = 'fixed';

お世辞にも速い、とは言えないものの、これでサイトマップ機能はMozillaでも実用レベルになった。と思う。

残る問題点

  1. 要素の内容量に応じて、padding-leftなどの変更速度が遅くなる問題。これについては、サイトマップ機能を有効にしていた場合、ドキュメントを読み込む前にCSSルールに追加するという形で再レンダリングを未然に防いでみた。若干の速度向上が見られた。
  2. スクロールがぎこちなくなってしまう問題。まあこれは、position : fixedの宿命と思って諦めるしかないような。

そういうわけで、サイトマップ機能をMozilla対応にしてみました。

onload時の要素生成処理

複数の要素を生成する場合、全ての生成が終ってからレンダリングを開始する(そうでなければ困るのだが)。


webmaster@jintrick.net
公開: 2001年09月14日
カテゴリ: