你真的需要指定type属性吗?

时间:2011-06-04 19:52:58

标签: javascript css html5 tags mime-types

  

可能重复:
  Why write <script type=“text/javascript”> when the mime type is set by the server?

前一段时间我读了Dive into HTML5,最近再次阅读了它的语义章节。我注意到它建议type="..."script上使用style属性,因为:

  • MIME类型应由服务器发送,
  • JS和CSS是默认值,
  • 浏览器不关心。

但是,我认为在typelanguage标记中包含script属性(或恐怖,style)仍然是常见做法。假设服务器已正确配置为发送正确的MIME类型,是否有理由使用这些而非显式?

编辑:这明确是关于HTML5,而不是XHTML。

6 个答案:

答案 0 :(得分:22)

大多数人都习惯使用HTML 4 / XHTML,之前需要type属性才能使用这些元素。

关于HTML 5,这些确实是可选的,并且规范提供了默认值,具体取决于元素。

对于script代码,默认为text/javascript

  

如果语言不是“text / javascript”所描述的语言,那么type属性必须存在

对于style代码,默认为text/css

  

如果属性不存在,则使用type属性的默认值为“text / css”。

所以,不需要,如你所说。但是,不能总是依赖浏览器支持和服务器设置 - 明确是一个好主意,因为它避免了这样的问题。

当然,并非所有浏览器都支持HTML 5 - 那些不支持HTML 5的那些将使用需要该属性的早期版本,并且您的javascript / css可能无法在此类浏览器中解析,这意味着您最终没有旧版浏览器上的CSS或javascript,当向后兼容性的简单解决方案是添加属性时。

答案 1 :(得分:4)

HTML5可能不需要type属性,但HTML 4.01 Strict等其他HTML Doc Types需要它。我还要说,任何能让开发人员更清楚代码/文档的事情都是一件好事。

如果这意味着要明确使用的脚本类型或样式类型,我会使用它。

答案 2 :(得分:1)

那不好。在XHTML中,严格要求type属性。虽然浏览器可能很宽松,但没有理由违反惯例。

答案 3 :(得分:1)

HTML5确实不需要type属性,但包括它不会破坏验证,因此您可以从HTML 4或XHTML 1转换为HTML5,并且仍然拥有<script><style>标签验证。

<link>标记也不需要type属性(强调添加):

  

type属性提供MIME类型   链接资源。 纯粹   咨询。该值必须是有效的   MIME类型。

     

对于外部资源链接,类型   属性用作用户的提示   代理商,以便他们可以避免取货   他们不支持的资源。如果   属性存在,然后是用户   代理必须假定资源是   给定类型(即使不是   有效的MIME类型,例如空的   串)。 如果省略该属性,   但外部资源链接类型   有一个默认类型定义,然后   用户代理必须假设   资源属于那种类型。如果是UA   不支持给定的MIME类型   对于给定的链接关系,那么   UA不应该获得资源;   如果UA确实支持给定的MIME   给定链接关系的类型,   那么UA应该获得资源   在指定的适当时间   对于外部资源链接   特殊类型。如果属性是   省略,和外部资源   链接类型没有默认类型   已定义,但用户代理会   如果类型是,则获取资源   已知并受支持,然后是用户   代理商应该获得资源   假设它会   支撑。

     

用户代理不得考虑该类型   属性权威 - 在   获取资源,用户代理   不得使用type属性   确定它的实际类型。只有   实际类型(如下所述)   段)用于确定   是否应用资源,而不是   上述假设类型。

答案 4 :(得分:0)

如果您不使用该类型,则无法验证

答案 5 :(得分:0)

根据w3,这是required

即使新浏览器可以在不指定标签的情况下进行管理(使用默认设置),最好将其保留以便与旧浏览器向后兼容。