0

要素のオフセットを使用するスクリプトがあります。このスクリプトを次のように起動するつもりでした:

window.addEventListener('load', function() {
    ...
}

このメソッドを使用すると、すべての DOM 要素が定義されますが、オフセット値が正しくありません。一部の css 値をオフにすることで、提供されたオフセットを取得できます。私が適用した迅速でひどい修正:

window.addEventListener('load', function() {
    function my_func(){
        ...
    }
    window.setTimeout(my_func, 1000);
});

これは正しいオフセットをレンダリングしますが、ダクトテープのように感じます.

私の最後の試みは、webkit を強制的にレンダリングすることでしたが、これにも間違ったオフセットがありました:

 window.addEventListener('load', function() {
    function my_func(){
        ...
    }
    document.getElementById('wrap').style.display = 'none';
    document.getElementById('wrap').style.display = 'block';
    my_func();
});

何か提案はありますか?または、これが発生する理由の説明。私がテストしていたブラウザは Chrome です。

編集 :

オフセットは dom 構造です:

<div id="wrap">
    <div>
        <p>...</p>
        <p>...</p>
        <p>...</p>
    </div>
    <div>
        <p>...</p>
    </div>
   ...
</div>

「#wrap div」のノード リストを (for) lop してオフセットにアクセスします。line-height と font-size をオフにすると、レイアウトが完全にレンダリングされる前に計算されたオフセットが取得されます。

offsetHeight を使用する前に、各 p および div の line-height、font-size、および display を調整しても影響はありません。

4

1 に答える 1

1

CSS と画像の読み込みがいつ完了したかわからないため、ページ レンダリングloadの代わりに、readyまたはページ レンダリングで使用する必要があります。

オフセットが正しくない場合loadは、何か他のことが起こっています。

于 2013-03-08T23:58:24.353 に答える