从我正在阅读的内容来看,defer
上的<script>
属性现在是widely supported,但我从未看到它被使用或提及过。
如果您不需要推迟内联脚本并且不动态添加脚本(which cause problems in IE9- and Safari 4-),那么似乎可以可靠地使用它并按指定顺序拥有scripts run right before DOMContentLoaded (async
不会发生这种情况)
这基本上是大多数网站所需要的:在DOMready上按顺序运行几个或多个外部脚本。例如:
<script defer src='jquery.js'></script>
<script defer src='jquery.some-plugin.js'></script>
<script defer src='my-scripts.js'></script>
为什么不广泛使用?我现在可以实际使用吗?
答案 0 :(得分:2)
我做了一些研究,我发现defer
的问题不会停留在IE9中动态添加的内联脚本和脚本中。在HTML5 Boilerplate GitHub https://github.com/h5bp/lazyweb-requests/issues/42
真是太遗憾了,我觉得他们应该尝试改进defer
,而不是处理可疑的async
(可疑,因为只有当脚本不相互依赖时它才有用,这对我来说很少见)
答案 1 :(得分:0)
你问是否:
您可以可靠地使用
defer
并在指定顺序的DOMContentLoaded 之前运行脚本
不幸的是,我没有看到任何说明defer
脚本必须按顺序执行的规范或标准,所以我不认为你可以在任何浏览器中依赖它。规范只是说在加载DOM之后必须执行defer
脚本。