在javascript中使用defer属性的正确语法是什么?
我看到它有两种方式:
1:
<script defer >...</script>
2:
<script defer="defer">...</script>
从经验[和我找不到的参考]我更倾向于使用第二个选项,但我只是仔细检查了official w3c site,似乎选项1是正确的。
谢谢
答案 0 :(得分:5)
defer
是boolean 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)
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