我总是将脚本标记放在页面底部,因为在HTML / CSS和文本加载完成之后加载脚本是一种很好的做法。我刚刚发现了defer属性,它基本上做了同样的事情,就是在获取和执行脚本之前等待页面完成加载。
因此,如果使用defer属性,是否有必要将脚本标签物理地放置在页面底部和头部标签内?
我觉得将脚本标签保留在头部内部的可读性更好。
<script src="script.js" defer="defer"></script>
或
<script defer="defer">
// do something
</script>
答案 0 :(得分:4)
你问的最佳做法? 使用延迟脚本
为什么?放在页面底部的脚本可以很好地工作,因为脚本通常会阻止并行下载,如HTML / 1.1规范中所指定的那样,但使用此替代属性表示脚本不包含document.write并告诉浏览器继续渲染。
Here is a better description of using the defer attribute that can be rendered for moz
答案 1 :(得分:2)
首先,所有浏览器都不支持defer属性(有些支持它的人只是忽略它)。将脚本放在页面底部可确保在脚本执行之前,它上面的所有HTML元素都已加载到DOM中。另一种方法是使用onload
方法或使用jQuery的DOM ready函数。
答案 2 :(得分:1)
虽然我同意你的看法,使用'defer'并在标题中放置脚本会提高可读性,桌面和移动Opera仍然不支持此属性(详情请查看this table)。
答案 3 :(得分:1)
在HTML底部的脚本中使用defer有不同的理由:
重要的是要知道每个浏览器都有“延迟”之类的东西,而繁忙的指标则有点不同。
最佳做法应该是:将脚本放在底部并推迟。
除了可读性方面,我只看到优势,将脚本放在底部,与“带头延迟的脚本”或“底部没有延迟的脚本”进行比较。