javascript onload事件和html页面中的普通脚本之间的区别

时间:2012-12-27 05:59:41

标签: javascript javascript-events onload

这两段代码有什么区别

样本1:

<script type="text/javascript">
     function myfunc () {
                alert('hi');
            }
         window.onload = myfunc;
</script>   

样本2:

<script type="text/javascript">
     alert('hi');//no function used 
</script>

两段代码都成功执行。提前谢谢。

5 个答案:

答案 0 :(得分:1)

window.onload使得所有DOM元素在脚本运行之前加载 - 也就是说,如果您的脚本修改或使用DOM元素,那么它应该附加到window.onload(或等效的东西)在框架中)。如果它独立于DOM,您可以使用它们。有关更多信息,请参阅Mozilla Developer Network页面。请注意,无法从window.onload运行的内联脚本可以在解析器到达时运行 - 它不会等待加载其余DOM。

答案 1 :(得分:1)

第一个在页面完成加载后执行,另一个在解析后立即执行 如果您希望看到差异,请复制两个代码段(复制粘贴两次)并查看它们的行为方式

答案 2 :(得分:1)

样品1和样品2做同样的事情。但是,样本1中的window.onload在HTML内容(以及所有图像,样式表和远程脚本)完全加载时执行该功能(而不是在加载所有DOM元素时)。

示例2与示例1相同,但立即执行脚本。当您的页面需要一段时间才能完全加载时,您会看到差异。您的测试页可能是基本的,因此它们似乎同时执行(实际上是在样本2之后执行window.onload)。

当你需要在页面加载后执行Javascript代码时,通常会使用

window.onload。如果您希望Javascript在浏览器中加载特定DOM元素后立即执行,则可以使用示例2中的内联脚本。

答案 3 :(得分:0)

当页面加载完全包括图像,音频等时,

onload事件触发。 但直接写一个语句将立即执行。 因此,onload警报将在另一个之后触发。

选中此DEMO

答案 4 :(得分:0)

另一个重要的区别是,由于第二个脚本立即执行,您将无法访问该脚本之后的任何DOM元素。

例如,如果在标记结束之前有一个DIV元素,则不能使用document.getElementById(或类似的DOM访问函数)来获取特定的DIV。

但是第一个脚本只会在页面加载后执行,你可以访问DOM中的任何元素