为什么将脚本标记放在body标记的末尾是好的?

时间:2013-06-17 04:23:18

标签: javascript dom browser

有两个与浏览器网页初始化相关的事件。

  • DOMContentReady(文档对象):解析了HTML文档并构建了DOM树
  • load(window object):呈现(显示)HTML文档的所有元素

根据我的理解,浏览器无法在DOM准备好之前开始渲染页面(触发DOMContentReady),默认情况下,脚本标记会阻止任何其他浏览器进程,直到下载并执行脚本文件。

那么为什么将script标签放在body标签的末尾呢?在我看来,当浏览器在页面的任何位置遇到脚本标记时将被阻止,因此在下载并执行脚本标记之前不会触发DOMContentReady。因此,除非脚本完全处理,否则用户无法看到除白色空白页之外的任何内容,无论脚本标记的位置如何。

1 个答案:

答案 0 :(得分:2)

现代浏览器将下载页面内容并在下载时显示。如果您的脚本标记位于正文之前,浏览器可能会在任何开始显示之前下载所有脚本,这可能是一段不合时宜的时间,使得经常不耐烦用户在看到任何东西之前都会等待。

在所有页面内容之后,将脚本标记放在body标记的末尾意味着您的整个页面将尽快开始显示,以便为用户提供一些内容 - 以及然后您的脚本将下载并使一切正常。

  

根据我的理解,浏览器无法在DOM准备好之前开始渲染页面(...)因此,除非脚本完全处理,否则用户无法看到除白色空白页之外的任何内容,无论脚本标记的位置如何。< / p>

事实并非如此。现代浏览器将在页面内容仍在下载时显示内容,并且只要能够充分了解页面的每一位,就会显示页面的每一位。