“ type”属性对于 < script > 标记是必需的吗?

这两种情况我都见过:

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script>

还有这个:

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script>

Type 属性有什么关系吗?

40475 次浏览

在 HTML5中不需要 type属性,但是在 HTML < = 4和(X) HTML 中应该声明它

为了测试的目的,它将工作无效,但 W3C 要求它正确验证。HTML5草案并没有要求将其作为一个需求,但是 W3C 仍然采用草案的形式,他们也不推荐这样做。

不过,任何重要的浏览器都可以很好地解析它。

对于 HTML4.xtype属性是 需要.来源

此属性指定元素内容的脚本语言,并覆盖默认脚本语言。脚本语言被指定为内容类型(例如“ text/javascript”)。作者必须为此属性提供一个值。此属性没有默认值。


对于 HTML 5,它是 可以选择。如果没有指定,它默认为 text/javascript.来源

Type 属性提供脚本的语言或数据的格式。如果该属性存在,则其值必须是有效的 MIME 类型。不能指定字符集参数。默认值是“ text/javascript”,如果该属性不存在,则使用该值。

建议: 见 HTML 5.2


对于 HTML 5.2,它是 如果使用有效的 JavaScriptMIME 类型,则应省略(例如 text/javascript)

省略该属性,或将其设置为 JavaScript MIME 类型,意味着该脚本是经典脚本,将根据 JavaScript 顶级生产进行解释。经典脚本受字符集、异步和延迟属性的影响。作者应该省略该属性,而不是冗余地给出 JavaScriptMIME 类型。

不,标签中不需要“ type”属性。除非你想让你的代码有效。

我们在工作中已经省略了很多年,这从来都不是个问题。我们对多种设备、浏览器等进行大量测试。这包括各种 HTML4和 XHTML 文档类型。

我创建了这个小页面用于在 github 上进行测试: Http://kenshub.github.io/script-type.html

HTML 5.2标准(2017年末)规定应该省略 type 属性。

Type 属性允许自定义所表示的脚本类型:

省略该属性,或将其设置为 JavaScript MIME 类型,意味着该脚本是经典脚本,将根据 JavaScript 顶级生产进行解释。经典脚本受字符集、异步和延迟属性的影响。作者应省略该属性,而不是冗余地给出 JavaScriptMIME 类型。

(强调我的)

资料来源: https://www.w3.org/TR/html52/semantics-scripting.html#element-attrdef-script-type

Type 属性在 HTML4.01中是必需的,但在 HTML5中是可选的。 该类型显示要分析的类型。

来源: W3学校MDN

注意: 如果 type 属性是音频、 HTML、视频或除 JavaScript 之外的任何 MIME 类型,则不会执行代码。

虽然 type 属性不是必需的,但在大多数情况下它是有帮助的。IE 工作的很好,但是有时候 chrome 和 FF 会导致一个问题,特别是如果脚本很大。 我在处理 plotyjs 库时遇到了 type 属性的问题。如果没有 type 属性,IE 可以显示图形,但是 FF,Chrome 和 edge。在添加了类型属性之后,chrome 和 FF 能够显示图表/图形