推迟javascript - 什么是正确的html语法defer或defer =“defer”

时间:2013-06-18 12:40:58

标签: javascript html w3c

在javascript中使用defer属性的正确语法是什么?

我看到它有两种方式:

1:

<script defer  >...</script>

2:

<script defer="defer">...</script>

从经验[和我找不到的参考]我更倾向于使用第二个选项,但我只是仔细检查了official w3c site,似乎选项1是正确的。

谢谢

4 个答案:

答案 0 :(得分:5)

deferboolean attribute [HTML 4.01 spec]

  

某些属性扮演布尔变量的角色(例如,selected元素的OPTION属性。它们出现在元素的开始标记中意味着属性的值为“true”。他们的缺席意味着“假”的价值。

     

[...]

     

在HTML中,布尔属性可能以最小化的形式出现 - 属性的值单独出现在元素的开始标记中。因此,selected可以通过写:

来设置
<OPTION selected>
     

而不是:

<OPTION selected="selected">
     

作者应该知道,许多用户代理只能识别布尔属性的最小化形式,而不是完整形式。

但是,如果您使用XHTML,则必须使用第二种形式,因为XHTML遵循XML语法,其中属性始终必须具有值。

答案 1 :(得分:3)

由于您引用了HTML 4.01:

这是Boolean Attribute。两种形式都是正确的,但规范recommends the former


如果你使用的是XHTML,那么你会have to use the longer version

HTML 5 also allows both versions并删除了使用其中一个的建议(因为与XHTML的兼容性作为text / html,所有现代浏览器都可以处理这两种语法)。

答案 2 :(得分:2)

HTML 5.1 nightly

  

2.4.2布尔属性

     

许多属性是布尔属性。存在的   元素上的boolean属性表示真值,而   缺少属性表示错误值。

     

如果属性存在,则其值必须为空   字符串或与ASCII不区分大小写的匹配项   属性的规范名称,没有前导或尾随空格

所以defer是正确的,defer="defer"defer="DeFeR"以及defer=""

也是如此

答案 3 :(得分:0)

async和defer属性是布尔属性,指示脚本应如何执行。如果src属性不存在,则不能指定defer和async属性。

https://www.w3.org/TR/html5/scripting-1.html#attr-script-defer