Window.onload与程序执行

时间:2014-10-11 21:32:09

标签: javascript onload

当使用过程样式时,代码似乎是在元素的宽度尺寸错误的情况下执行的(我怀疑代码是在元素创建完成之前执行的),当我刷新页面时一切都很好。

问题:

<html>
    <head></head>
    <body>
        <div id="parent">
        </div>
        <script language="javascript" type="text/javascript">
            create_object(); // Creates an element and puts it inside div parent
        </script>
    </body>
</html>

解决方案:

<html>
    <head>
        <script language="javascript" type="text/javascript">
            window.onload = function(){
                create_object(); // Creates an element and puts it inside div parent
            }
        </script>
    </head>
    <body>
        <div id="parent">
        </div>
    </body>
</html>

有什么区别? window.onload当然等待页面加载,但因为它位于元素之后..不应该没问题吗?

页面上没有执行其他java脚本。

2 个答案:

答案 0 :(得分:1)

window.onload在调用其回调之前等待加载所有页面资源(例如图像和样式表)。在你的第一个例子中,DOM元素都将存在(因为你的代码在解析之后的事物的末尾执行),但是像图像这样的外部资源可能还没有被加载,因此最终的布局可能还没有实现了所有可能还没有最终的尺寸/布局。

答案 1 :(得分:0)

当DOM树准备好并且加载了所有资源(图像,脚本,样式表......)时,执行

window.onload。如果你在没有这个回调的情况下加载你的脚本,如果你将图像或样式表加载到这个集合中你的div宽度可能是错误的...