我已经读过,最好将<script>
标记放在文档的末尾。执行此操作的论据似乎是浏览器将停止将页面呈现在脚本标记下方,直到它已加载并执行脚本为止。如果您的脚本标记位于页面顶部,则渲染会暂停一段时间,这很糟糕。
但是,我不确定这是否真的如此。
环顾四周,我通常会看到以下位置...
<head>
或<body>
标记 Stackoverflow是一个将脚本标记放在head
中的网站示例,由于它们通常对性能非常着迷,我开始怀疑页面中的位置是否重要。
body
元素放置javascript的另一个常见位置似乎正好位于<body>
元素的最后。我假设这意味着页面可以在javascript下载时呈现并继续执行它的事情。
有没有人对此有任何想法或建议?我希望尝试让我们的页面能够执行并尽快向用户显示。
重要吗?位于页面顶部有什么好处?页面底部?
答案 0 :(得分:5)
这真的取决于。
没有捕获所有答案,因为它取决于你的javascripts正在采取什么行动。
如果您对需要加载脚本的DOM元素进行操作,有时需要将脚本放在页面末尾。假设你想专注于一个控件而你的脚本是:
var mytext = document.getElementById("mytext2");
mytext.focus();
在这种情况下,在浏览器加载mytext2控件之后,您希望它在页面的末尾执行。对于仅包含事件调用的函数的脚本块,这一点不太重要。
如果您有一个包含大量函数库的大型.js文件,您可能还希望将其放在页面末尾,以便浏览器在加载大型.js文件之前加快页面加载速度。
谷歌分析建议将他们的追踪器放在最后,以确保在计算点击数之前已经交付了页面,但在某些情况下,它建议将脚本放入标题中,它可以双向工作。
所以,对我来说,经验法则是HEAD脚本,除了在线执行并对DOM对象执行的操作之外的所有内容,或者您希望在页面后加载的大型脚本。
Rick Strahl刚刚在.net上写了一篇关于placement of Javascript的精彩博客:
答案 1 :(得分:3)
唯一有效的方法是将它包含在顶部(在<head>
部分中),但在底部加载会更快 - 如果脚本靠近底部,页面的其余部分将加载得更快,为用户提供更好的响应并使体验更好。
问题是,大多数Web浏览器都会停止呈现页面的HTML,直到他们到目前为止已经获取并解析了所有JavaScript代码。因此,如果<head>
中包含缓慢加载的.js文件,则在下载和解析.js之前,不会呈现任何HTML并且图像甚至不会开始下载,因此前端工程师会传播以放置脚本尽可能远在代码中。
我通常只为我的.js文件设置一个远期的Expires标头,以便它们在浏览器中缓存很长时间,然后将它们包含在<head>
部分中。这样可以提供良好的性能并且看起来并不丑陋: - )
但是如果你在服务外部.js库(在你自己以外的其他服务器上),你可能会想要它们在底部,因为你不能改变其他服务器的Expires-header,你不能知道其他服务器总是会响应。
答案 2 :(得分:1)
我认为js文件的大小比javascript的位置重要得多。我总是设置更高数量的并发连接,以确保它们并行下载。
答案 3 :(得分:1)
我认为最好在关闭正文标记之前放置脚本标记。这是因为:
来自this文章。雅虎的表现规则6也是Move Scripts to the Bottom
答案 4 :(得分:0)
Google Analytics总是习惯于将脚本标记放在页面底部。我认为理由是,如果谷歌服务器出现故障,那么如果页面位于头部,页面将无法加载(仅适用于IE)。