2

<script>在关闭标签之前放置标签是否<body>与将它们放置在<head>部分中并指定defer="defer"属性相同?

谢谢你。

4

3 回答 3

2

是/否。

是的,因为放置 defer 标签会等到文档加载完毕后再执行。

不,因为将 放在标签<script>之前</body>并不一定意味着文档已完全加载,因为您可以在结束 body 标签和结束 HTML 标签之间放置其他标签。例子

<html>
  <head>
  </head>
  <body>
  <script>...</script>
  </body>
  <link/>
  <script>
  although it is invalid HTML most browsers will render tags outside the body. This is 
  probably more of an error in code
  <div> some content</div>
</html>

另外值得注意的是,脚本标签的 defer 属性并非在所有浏览器中都有效。

编辑:

关于更快加载页面的性能,您可能需要查看这篇文章,它提供了一些指南,包括放置脚本和 css 的位置

http://developer.yahoo.com/performance/rules.html

于 2011-04-19T19:07:48.220 回答
1

defer 需要 Gecko 1.9.1 此布尔属性设置为向浏览器指示脚本将在文档被解析后执行。由于所有其他主要浏览器尚未实现此功能,因此作者不应假设脚本的执行实际上会被延迟。永远不要从 defer 脚本调用 document.write() (从 Gecko 1.9.2 开始,这会吹走文档)。不应该在没有 src 属性的脚本上使用 defer 属性。从 Gecko 1.9.2 开始,没有 src 属性的脚本会忽略 defer 属性。但是,在 Gecko 1.9.1 中,如果设置了 defer 属性,甚至内联脚本也会被延迟。

当文档完成解析时和末尾的<body>标签相似但不完全相同。

同样重要的是要注意这仅适用于具有外部src集的脚本。

于 2011-04-19T19:06:13.137 回答
1

通常是的,但浏览器不保证它们会在加载页面后执行 JavaScript,除非您指定 (defer="defer")。

于 2011-04-19T19:07:56.450 回答