1

为什么脚本类型前面有“text/”?

例如:

<script type="text/javascript" />
<link type="text/css"/>
<script id="entry-template" type="text/x-handlebars-template">

可能标准的 javascript/vbscript/css 被定义为

<MIME-media-type>/<MIME-sub-type>

Handlebars 怎么样 - 为什么它遵循相同的格式?(与其他几个库相同)

如果我想为我的开源库添加一个自定义类型(例如:nirman)......应该写成:

<script type="nirman" /> 
/// OR
<script type="text/nirman" />

?

谢谢

4

2 回答 2

5

为什么脚本类型前面有“text/”?

它没有……text/javascript淘汰而取而代之application/javascript

Handlebars 怎么样 - 为什么它遵循相同的格式?

…但是您的问题似乎更多地是关于为什么 MIME 类型分为两部分。这是由 MIME 规范定义的,用于将 MIME 类型划分为一般类别(从不经常更新的选项上的一小部分选择)和特定类型。

如果我想为我的开源库添加一个自定义类型(例如:nirman)......应该写成

两者都不。

首先,如果您正在编写脚本语言,那么您应该使用application,而不是text

文本——文本信息……子类型将用于丰富文本的形式,应用软件可以增强文本的外观,但为了获得内容的总体概念,必须不需要此类软件

应用程序——一些其他类型的数据,……要由应用程序处理的信息。

其次,由于您正在制作它并且没有针对它的公共标准,因此子类型应以X

以字符“X-”开头的媒体类型值是私有值,由相互同意的系统使用。任何没有严格和公开定义的格式都必须以“X-”前缀命名,

所以你应该使用:application/x-nirman

于 2013-09-18T07:58:39.857 回答
2

媒体类型(MIME 类型)名称一般由主要媒体类型和子类型组成,以斜杠“/”分隔。这是在RFC 2406中指定的。

为 JavaScript 选择的主要类型是text,因为 JavaScript 代码文本。它可以被人类直接阅读——当然需要理解 JavaScript,这就是为什么它不是文本 ( text/plain)。后来,出于理论上的原因,已经为 JavaScript 提出了各种其他媒体类型,但这text/javascript是所有浏览器都认可的。

车把似乎使用text/x-handlebars-template.

如果您想在一个script元素中使用不是 JavaScript 代码但将由 JavaScript 代码处理的代码,该代码将其解释为某种数据(可能是某种语言的程序代码),那么最安全的选择是使用text/plain. 不是因为逻辑,而是因为 HTML5 CR 中关于脚本语言的声明。它列出了一些“不得被解释为脚本语言”的媒体类型名称,在这些替代方案中,text/plain可能是最不合逻辑的。

这里的重点是防止浏览器将脚本元素内容作为 JavaScript(或 VBScript)执行,因此您需要指定一个type属性,其值将使浏览器避免执行浏览器通常对script元素执行的操作。然后浏览器将只将内容存储在 DOM 中,供您的 JavaScript 代码处理。

是的,如果您的代码在某种意义上是程序代码,并且您正在尽力告诉浏览器它不是,那么这是不合逻辑的。但它不是浏览器本机解释的程序代码。

使用text/x-nirmanorapplication/x-nirman很可能也可以。或者任何看起来不像是指 JavaScript 或 VBScript 的东西。

于 2013-09-18T09:02:40.727 回答