【问题标题】:Why can you only use defer when src is specified?为什么只能在指定 src 时使用 defer?
【发布时间】:2011-03-16 20:49:43
【问题描述】:

在验证使用 <script> 标记的代码时,我在 validator.w3.org 上收到以下警告

元素脚本不能有属性 推迟,除非属性 src 也是 指定。

我不明白这样做的必要性,有人可以解释一下吗?

【问题讨论】:

    标签: javascript html


    【解决方案1】:

    defer 的意思是说“您可以在等待脚本到达之前继续解析 HTML”。

    如果脚本就在 HTML 中,那么你就不能(因为脚本在源代码中的方式),这将毫无意义(因为没有会阻止解析的外部依赖)。

    【讨论】:

    • 嗯,有道理,我认为 defer 意味着在页面的其余部分加载之前不查看标签之间的脚本。
    • 我猜这里的问题是如果您正在加载外部资源(例如 jquery),然后使用从内联脚本引用该脚本的代码。您可以通过将脚本移动到 HTML 代码的单独文件中来解决此问题,但这并不理想/如果您可以以某种方式定义脚本标签之间的依赖关系,或者推迟所有内容以确保它们按顺序加载,则将有所帮助。代码保存在哪里...您知道比简单地将所有依赖代码移动到外部资源更好的解决方案吗?
    【解决方案2】:

    Defer属性表示异步脚本加载(默认是浏览器先加载脚本,加载完成后立即执行)。

    如果没有src 属性,将不会加载任何内容,也不会延迟任何内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-13
      • 2016-08-22
      • 2021-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-01-04
      相关资源
      最近更新 更多