【问题标题】:is "<script type='text/javascript'>" incorrect?“<script type='text/javascript'>”不正确吗?
【发布时间】:2011-10-12 00:27:06
【问题描述】:

On aminutewithbrendan,brendan eich 做了一个不经意的评论,暗示提供脚本为

&lt;script type='text/javascript'&gt;&lt;/script&gt;

不正确,因为"text/javascript" 不是有效的 MIME 类型,而他声明 "application/javascript" 是有效的 MIME 类型。

我只关心提供 HTML5 作为文档类型

  • html5 W3C 规范中定义的&lt;script&gt; 的 MIME 类型在哪里?
  • "text/javascript""application/javascript" 的浏览器支持如何?
  • 应该使用哪个?或者我们是否应该根本不设置type

brendan 的文字引用:(1:48)

...或脚本类型等于 application/javascript 或 application/ecmascript,这些是官方 MIME 类型或 HTML4 中的一种,如 text/javascript ...

相关:

相关资源的联合并不能真正回答所有三个问题。

【问题讨论】:

  • 在 HTML5 中你只需写 &lt;script&gt;&lt;/script&gt;afaik。

标签: javascript html mime-types


【解决方案1】:

html5 W3C 规范中定义的&lt;script&gt; 的 MIME 类型在哪里?

无处,它有一个list(其中包括一些实验性和已弃用的),但声明您可以使用任何您喜欢的 MIME 类型。 MIME types are defined by IANAtext/javascript 被正式标记为过时,支持application/javascript

浏览器对“text/javascript”和“application/javascript”的支持是什么?

不够好。仍然有很多浏览器无法识别后者。 (不过这只是type属性的问题,你可以正确设置HTTP Content-Type header不用担心)。

应该使用哪个?或者我们应该根本不设置类型吗?

由于您只关心 HTML 5,因此完全忽略 type 属性。它是可选的,默认语言是 JavaScript。

【讨论】:

  • 作为旁注,您可以使用"application/javascript" 作为您的type,这将自动不向旧/不兼容的浏览器提供javascript。这可能被认为是“积极”的事情
【解决方案2】:

我认为布兰登(至少)部分错误。最新的 HTML5 编辑草稿(2011 年 8 月 15 日)说:

type 属性给出了脚本的语言或格式 数据。如果属性存在,其值必须是有效的 MIME 类型。不得指定 charset 参数。默认值,即 如果该属性不存在,则使用“text/javascript”。

因此,如果您不包含type 属性,则默认值为“text/javascript”。如果这是默认值,则它必须是有效的 MIME 类型。

还有哪些其他有效的 MIME 类型?该规范似乎没有给出示例列表,但它确实指定了所需的格式:

如果字符串与媒体类型规则匹配,则它是有效的 MIME 类型 在 RFC 2616 的第 3.7 节“媒体类型”中定义

您可以在这里享受阅读的乐趣:

http://www.ietf.org/rfc/rfc2616.txt

编辑:Quentin 是对的:对于 HTML5,假设您使用的是 Javascript,则无需包含 type 属性。

【讨论】:

  • 对我来说,这读起来好像只需要:type/subtype which text/javascript 将是有效的。但是我相信 W3C 应该支持 application/javascript 类型。
猜你喜欢
  • 1970-01-01
  • 2012-02-19
  • 2011-05-13
  • 2016-12-12
  • 2017-07-25
  • 2014-01-13
  • 2011-06-14
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多