<script>
在关闭标签之前放置标签是否<body>
与将它们放置在<head>
部分中并指定defer="defer"
属性相同?
谢谢你。
<script>
在关闭标签之前放置标签是否<body>
与将它们放置在<head>
部分中并指定defer="defer"
属性相同?
谢谢你。
是/否。
是的,因为放置 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 的位置
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
集的脚本。
通常是的,但浏览器不保证它们会在加载页面后执行 JavaScript,除非您指定 (defer="defer")。