为什么要使用meta标签Content-Style-Type来链接外部CSS?

13

在浏览微软的示例StockTrader应用程序的源代码时,我在所有aspx文件中发现了这个片段:

<meta http-equiv="Content-Style-Type" content="text/css"/>
<title>.NET StockTrader Portfolio</title>
<link rel="stylesheet" href="StockTrader.css" type="text/css" />

为什么需要 meta 标签,当 link 标签已经包含了所有信息?我有什么遗漏吗?


6
实际上,HTML5验证器无法通过它。 - Moshe
我注意到仅有 Firefox 无法正确渲染我的一些页面,深入挖掘后发现我在 <head> 中有这个 meta 标签,但内容参数中有一个拼写错误。看来 Firefox 是唯一关心这个问题的浏览器!! - Octopus
6个回答

22
理论上需要设置 Content-Style-Type 的原因是为了内联样式属性:
<div style="color: red;">

这是哪种样式语言?与<style><link rel="stylesheet">标签不同,它没有type属性机制来告诉浏览器这是哪种语言: 因此需要使用全局的Content-Style-Type。

对于Content-Script-Type和内联事件处理程序属性也是一样的。

<div onclick='alert("hello")'>

这是什么语言?实际上在JavaScript和VBScript中都是有效的;在IE中可能是任何一种。理论上,你应该给浏览器一个Content-Script-Type头/元来告诉它。即使使用普通的JavaScript,您可能也希望通过设置类型参数(如text/javascript;version=1.6e4x=1)来更改方言(如果您想使用E4X XML文字,但您不需要,因为它们是一个可怕的错误)。

实际上,所有这些都没有任何用处,因为默认的CSS是您实际上可以使用的唯一样式语言,许多浏览器根本不会注意Content-Style-Type,而且没有浏览器会注意到Content-Script-Type

(好吧,谁需要内联样式和事件处理程序属性呢?)


我以前看过类似的帖子,但从未得到这样的回复.. +1这是一个旧帖子..期望几乎相似的答案..(https://dev59.com/-0rSa4cB1Zd3GeqPae5e) - Rookie Programmer Aravind

16
"Content-Style-Type" 元标记用于设置文档的默认样式类型。实际上,大多数人在使用样式类型时会明确指定,例如在问题中的 <link> 标记中。这种特定声明似乎也是多余的。根据 W3 所述

用户代理应根据以下步骤(优先级由高到低)确定文档的默认样式表语言:

  1. 如果任何 META 声明指定 "Content-Style-Type",则字符流中的最后一个决定默认样式表语言。
  2. 否则,如果任何 HTTP 标头指定 "Content-Style-Type",则字符流中的最后一个决定默认样式表语言。
  3. 否则,默认样式表语言为 "text/css"。
因此,理论上,使用 "Content-Style-Type" 将默认值设置为 "text/css" 只是覆盖了浏览器本来假定的内容,尽管这可能是针对试图在 HTTP 标头中设置某些内容的恶意 Web 服务器的保险措施。
它可能是出于热情的尝试,以符合标准。 快速编辑说明:我链接的那份 W3 文档实际上声称,在没有定义默认样式表语言的情况下使用 style 属性的元素是不正确的文档。然而,我以前从未见过这在验证器中成为问题。

3
微软公司... "热情尝试符合标准" ... 我有什么遗漏的吗?嘿嘿。+1 很棒的答案。 - Doug Neiner
验证器不会将其视为问题 - 它不是可以在DTD中表达的内容。有效性只是符合性的一个子集。 - Quentin

3

这是一种浪费带宽的东西,没有人真正使用它。(它如此无用,甚至未被包含在HTML5中。)


0

0

从技术上讲,这没有什么区别,因为所有主要的浏览器都假定使用CSS。


0

正如其他人所说,这将设置内联样式和链接的默认值。这属于可能不需要但应该包含的内容类别。它在http://www.w3.org/TR/REC-html40/present/styles.html#default-style中定义,其他发帖者已经指出主要浏览器都假定它。但是,仍应添加它,因为浏览器不是HTML文件的唯一使用者。它们可以被其他程序导入或处理,这些程序可能比浏览器更仔细地遵循规范。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接