【问题标题】:Defering javascript - what is the correct html syntax defer or defer="defer"推迟 javascript - 什么是正确的 html 语法 defer 或 defer="defer"
【发布时间】:2013-06-18 12:40:58
【问题描述】:

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

我已经看到它做了两种方式:

1:

<script defer  >...</script>

2:

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

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

谢谢

【问题讨论】:

  • 第二个变种看起来像 XHTML
  • 感谢您的快速解答!选择第二个选项来“面向未来”控件

标签: javascript html w3c


【解决方案1】:

deferboolean attribute [HTML 4.01 spec]

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

[...]

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

<OPTION selected>

代替:

<OPTION selected="selected">

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

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

【讨论】:

    【解决方案2】:

    由于您引用了 HTML 4.01:

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


    如果您使用的是 XHTML,那么您应该have to use the longer version

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

    【讨论】:

      【解决方案3】:

      HTML 5.1 nightly

      2.4.2 布尔属性

      许多属性是布尔属性。一个的存在 元素上的布尔属性表示真值,并且 属性不存在代表假值。

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

      所以defer 是对的,defer="defer"defer="DeFeR"defer="" 也是如此

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2021-10-10
          • 2018-09-11
          • 1970-01-01
          • 2011-07-12
          • 2017-06-15
          • 1970-01-01
          • 1970-01-01
          • 2011-04-29
          • 1970-01-01
          相关资源
          最近更新 更多