0

这两段代码有什么区别:

样品 1:

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

样本 2:

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

两段代码都成功执行。

4

5 回答 5

1

这样window.onload做是为了在脚本运行之前加载所有 DOM 元素 - 也就是说,如果您的脚本修改或使用 DOM 元素,那么它应该附加到window.onload(或框架中的等效项)。如果它独立于 DOM,您可以使用其中任何一个。有关详细信息,请参阅Mozilla 开发人员网络页面。请注意,window.onload一旦解析器到达它,不运行的内联脚本就可以运行——它不会等待 DOM 的其余部分被加载。

于 2012-12-27T06:03:35.670 回答
1

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

于 2012-12-27T06:05:47.760 回答
1

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

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

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

于 2012-12-27T06:19:03.063 回答
0

onload页面加载完毕后触发事件,包括图片、音频等。但直接写语句会瞬间执行。因此,onload 警报将在另一个警报之后触发。

检查此演示

于 2012-12-27T06:26:03.147 回答
0

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

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

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

于 2012-12-27T06:49:23.377 回答