如果我把所有脚本放在``后面,我是否需要等待`domReady`?

时间:2012-11-01 13:51:13

标签: javascript domready

Jquery有一个ready方法:

$(document).ready(function(){
   // my code
})

当dom准备就绪时,它将执行我的代码。

我有一个问题,如果我把所有脚本放在</body>之后,例如

<html>
    <body>
       // all kinds of html tags
    </body>
    <script src="/path/to/jquery.js"></script>
    <script src="/path/to/all-javascript-compressed-in-one-file.js"></script>
</html>

我还需要写$(document).ready()吗?在ready之后dom已经</body>了吗?

2 个答案:

答案 0 :(得分:4)

通常,脚本会在 </body>之前添加,而不是在之后 - 否则HTML将无法验证;正如ŠimeVidas在评论中指出的那样,<head><body>之外的任何内容都不会出现。

话虽如此,从技术上讲,DOM在那时还没有被认为准备就绪(因为浏览器仍在解析<body>),但已经包含了正文中的所有元素。因此,可以安全地跳过$(document).ready()

这样做会更早地执行初始化脚本,因为在实际的DOMContentLoaded事件被触发之前会有一些延迟。这意味着更快的页面加载和更好的用户体验。

您可能会对此related discussion感兴趣,因为它会强制执行jQuery ready事件。

答案 1 :(得分:3)

总之,没有。当dom树可用时,dom被认为是“准备好”,如果你的javascript是页面上的最后一件事,那么它之前的所有内容都是“准备好”,因为网页是从上到下“加载”的。