我现在可以安全地使用<script defer>吗?

fre*_*nte 12 javascript deferred-execution

从我正在阅读的内容来看,现在广泛支持defer属性,但我从未看到它被使用或提及过.<script>

如果您不需要推迟内联脚本并且不动态添加脚本(这会导致IE9和Safari 4-中出现问题),那么似乎可以可靠地使用它并且在指定顺序的DOMContentLoaded之前运行脚本(这不会发生async)

这基本上是大多数网站所需要的:在DOMready上按顺序运行几个或多个外部脚本.例如:

<script defer src='jquery.js'></script>
<script defer src='jquery.some-plugin.js'></script>
<script defer src='my-scripts.js'></script>
Run Code Online (Sandbox Code Playgroud)

为什么不广泛使用?我现在可以实际使用它吗?

fre*_*nte 2

我做了更多研究,发现问题并不defer仅仅限于内联脚本和 IE9 中动态添加的脚本。HTML5 Boilerplate GitHub 上有一长串与各种浏览器相关的问题和不一致问题https://github.com/h5bp/lazyweb-requests/issues/42

真是可惜,我觉得他们应该尝试改进defer而不是解决可疑的问题async(可疑是因为它只有在脚本不相互依赖时才有用,这对我来说很少见)

  • `defer` 对于内联脚本从来没有任何意义(甚至禁止在内联脚本中存在它),因此不能将其视为“问题” (2认同)