【发布时间】:2011-07-12 03:31:49
【问题描述】:
我有几个<script> 元素,其中一些元素中的代码依赖于其他<script> 元素中的代码。我看到defer 属性在这里可以派上用场,因为它允许代码块在执行中被推迟。
为了测试它,我在 Chrome 上执行了这个:http://jsfiddle.net/xXZMN/。
<script defer="defer">alert(2);</script>
<script>alert(1)</script>
<script defer="defer">alert(3);</script>
但是,它会提醒2 - 1 - 3。为什么不提醒1 - 2 - 3?
【问题讨论】:
-
也许可以查看this article。而且,与往常一样,IE 对某事的含义有自己的看法,并决定先加载脚本,但延迟执行,直到加载正文(通常)。
-
我想你会发现 IE 对 defer 的定义符合 W3C 在 DOM Level 1 规范中对 defer 的意图。
-
正如 Alohci 在他的回答中已经指出的那样,根据 HTML Standard
defer仅在指定src时有效。这可能是您的示例在大多数浏览器中无法按预期工作的原因。 -
@Pankrat 真实故事!试试jsfiddle.net/xXZMN/50 在 Firefox24 中测试
-
发现这张图对理解延迟以及异步和延迟之间的区别非常有帮助:growingwiththeweb.com/2014/02/async-vs-defer-attributes.html
标签: javascript html deferred-execution