【问题标题】:Is type="text/css" mandatory on the <link> element?<link> 元素上的 type="text/css" 是强制性的吗?
【发布时间】:2013-07-07 10:33:19
【问题描述】:

我正在尝试使用 Google 网络字体,并在官方网站 it recommends 上使用包含 type 属性的 &lt;link&gt; 标签,如下所示:

<link href='http://fonts.googleapis.com/css?family=Ubuntu:400,700' rel='stylesheet' type='text/css'>`

在官方 HTML5 样板站点中,他们省略了 type 属性

<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,700">

根据this rather old answer,在HTML5 中,type 属性在&lt;style&gt; 标记上是可选的,而在&lt;link&gt; 标记上是必需的。

但是,没有type 属性的版本可以在W3C validator 上正常验证。

那么,type 属性是否强制?

【问题讨论】:

标签: html css webfonts google-webfonts


【解决方案1】:

我在official W3C HTML5 draft找到了答案:

type 属性给出了链接资源的 MIME 类型。 是 纯属建议。该值必须是有效的 MIME 类型。

对于外部资源链接,type 属性用作提示 用户代理,以便他们可以避免获取他们不获取的资源 支持。如果该属性存在,那么用户代理必须假设 资源是给定类型的(即使那不是有效的 MIME 类型,例如空字符串)。如果该属性被省略,但 外部资源链接类型定义了默认类型,然后 用户代理必须假定资源属于该类型。 (...)

用户代理不能认为类型属性是权威的——在 获取资源时,用户代理不能使用 type 属性 确定其实际类型。只有实际类型 (...)。

样式表链接类型定义了处理资源的规则 内容类型元数据。 (...)

如果文档包含如下标记的样式表链接:

 <link rel="stylesheet" href="A" type="text/plain">
 <link rel="stylesheet" href="B" type="text/css">
 <link rel="stylesheet" href="C">

...那么一个只支持 CSS 样式表的合规 UA 将 获取 B 和 C 文件,并跳过 A 文件(因为 text/plain 不是 CSS 样式表的 MIME 类型)。

对于文件 B 和 C,它会检查返回的实际类型 服务器。对于那些以 text/css 形式发送的,它将应用 样式,但对于那些标记为 text/plain 或任何其他类型的,它 不会。

如果返回的两个文件之一没有 Content-Type 元数据, 或者使用语法不正确的类型,例如 Content-Type: "null",然后 样式表链接的默认类型将启动。因为那 默认类型是 text/css,样式表仍然是 已申请。

对于&lt;style&gt; 属性,同一文档指出:

type 属性给出了样式语言。如果属性是 存在,它的值必须是指定样式的有效 MIME 类型 语言。不得指定 charset 参数。默认 type 属性的值,如果该属性是 缺席,是“文本/css”。 [RFC2318]

【讨论】:

    【解决方案2】:

    我认为这不是强制性的,我已经成功使用了 &lt;style&gt;&lt;style type="text/css"&gt;.. 你使用的任何东西都可以工作,例如 &lt;script&gt;&lt;script type="text/javascript"> 工作方式相同:)

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 2011-12-04
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 2015-01-14
      • 1970-01-01
      • 2011-07-14
      相关资源
      最近更新 更多