window.onloadよりdom:loadedを使う

window.onloadはページの読み込みが終了した時点でイベントが呼び出されるため、この関数内に時間がかかる処理を置くと予想以上にページの描画が終わらない場合がある。
このイベントよりもっと速くて有用なイベントとして、dom:loaded がある。これは、ブラウザがHTMLをパースしてDOMツリーを構築し終えた時点で発火するイベント。つまりこのイベント後ならば document.getElementById を行っても要素が見つかりませんエラーが出なくなる。


使い方

document.observe("dom:loaded", 
    function() {
        //logic
    });


注意点として、DOMツリーの構築が終わっていても描画が終わっていない場合があるので、このイベント内で document.getElementById('someId').style.height のようなプロパティを見ても0やnullが入っている場合がある。

描画時にスタイル関連を操作したい場合は、dom:loadedイベント内で前処理をしておき、window.onloadイベント内でスタイルを適用するという形にするのが望ましい。前処理ができるような場合に限るけど。