<script>标签是否需要'type'属性?

Yar*_*rin 139 html

我见过这两个:

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script>
Run Code Online (Sandbox Code Playgroud)

还有这个:

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script>
Run Code Online (Sandbox Code Playgroud)

type属性是否以任何方式重要?

Eva*_*ski 132

对于HTML 4.x,该type属性是必需的.(W3):

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

对于HTML 5,它是可选的.如果未指定,则默认为text/javascript.(W3):

type属性提供脚本的语言或数据的格式.如果该属性存在,则其值必须是有效的MIME类型.不得指定charset参数.如果属性不存在,则使用默认值"text/javascript".

  • 此外,如果您在HTML4中使用内部事件脚本(例如`onload`,`onclick`,`onmouseover`属性等),您必须定义`<meta http-equiv ="content-script-type"content ="text/javascript">`在`<head>`或者配置你的服务器在HTTP头中发送`Content-Script-Type:text/javascript`. (7认同)

alb*_*vee 95

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


Sco*_*son 11

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

type属性允许定制表示的脚本类型:

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

(强调我的)

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

  • 有一个引用标准文档的答案很好。 (2认同)

Jam*_*son 7

出于测试目的,它将无效,但W3C要求它正确验证.HTML 5草案并没有要求它作为一项要求,但在W3C仍处于草案形式,他们不推荐它.

任何重要的浏览器都会解析它.


yaz*_*zer 6

不,标签中不需要'type'属性.除非您希望代码验证.

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

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


tuc*_*caz 5

根据W3C,它是必需的:http://www.w3.org/TR/REC-html40/interact/scripts.html

  • 但是时间不长:http://www.w3.org/TR/html5/scripting-1.html#script:*"type属性提供脚本的语言或数据的格式.如果属性存在,它的值必须是有效的MIME类型.不能指定charset参数.默认情况下,如果属性不存在,则使用默认值为"text/javascript"."*请注意,**我会**保持无论如何使用它. (23认同)
  • 尽管W3C说的是,在现实世界中,它并不是必需的. (6认同)
  • 无论当前使用什么浏览器,您都可以更好地遵循标准,以获得更好的互操作性和前向兼容性. (4认同)