在webkit中,在页面渲染和页面加载问题上运行脚本

时间:2013-03-08 23:46:20

标签: javascript google-chrome webkit rendering

我有一个使用一些元素偏移的脚本。我打算使用以下命令触发此脚本:

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();
});

任何sugestions?或解释为什么会发生这种情况。我正在测试的浏览器是Chrome。

编辑:

偏移是dom结构:

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

我通过(for)lopping&#34; #wrap div&#34;的节点列表来访问偏移量。 如果我关闭行高和字体大小,我将获得在完全呈现布局之前计算的偏移量。

在使用offsetHeight之前调整每个p和div的行高,字体大小和显示没有任何影响。

1 个答案:

答案 0 :(得分:1)

您应该在页面呈现上使用load而不是ready,因为您不知道CSS和图片何时完成加载。

如果您的偏移量在load中不正确,那么还会有其他事情发生。