2010-01-08 30 views
9

浏览通过微软的样本StockTrader应用程序的源代码,我发现这个片段中所有的aspx文件:为什么使用meta标签内容样式类型的外部CSS?

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

为什么meta标签,当链接标签说,这一切?我错过了什么吗?

+5

实际上,它HTML5验证的噱头。 – Moshe 2010-01-08 06:09:03

+0

我注意到,Firefox的独显misrendering我的一些网页,更深的挖掘我发现我有这个元标记在我,但有在内容参数的错字。看来Firefox是唯一关心的浏览器! – Octopus 2014-05-30 22:19:52

回答

13

“Content-Style-Type”元标记用于设置文档的样式类型的默认值。在实践中,这看起来并没有什么用处,因为大多数人会在使用时特别指定样式类型,例如您的问题中的<link>标签。这个特别的声明似乎也是多余的。 According to the W3

用户代理应按照以下步骤 确定 默认样式表语言的 文件(优先级从高到低):

  1. 如果任何META声明指定“内容 - Style-Type“中,字符流中的最后一个 决定了 默认样式表语言。
  2. 否则,如果任何HTTP标题指定了“Content-Style-Type”,则字符流 中的最后一个决定默认样式表 语言。
  3. 否则,默认的样式表语言是“text/css”。

所以从理论上说,使用“内容样式类型”设置默认为“text/CSS”只是压倒一切的是什么浏览器都会以为,无论如何,尽管也许这是对一个流氓Web服务器保险是可能会尝试在HTTP标头中设置某些内容。

它可能是一个热心企图遵守标准而产生的。

快速编辑注:我挂这W3文件实际上声称拥有其使用风格无属性定义了默认的样式表语言元素的文件是不正确的文件。然而,我从未在验证者中看到过这个问题。

+3

微软......“热衷于遵守标准的努力”......我错过了什么?呵呵。 +1好的答案。 – 2010-01-08 05:58:05

+0

验证器不会提高它作为一个问题 - 这是不是可以在DTD来表示。有效性只是符合性的一个子集。 – Quentin 2010-07-01 13:15:34

16

你为什么在理论上需要一个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

(啊,谁需要内嵌样式和事件处理程序的属性呢?)

+0

我见过类似的帖子之前,但从来没有得到这个回应.. +1 这里是一个旧的帖子..期待几乎相似的答案..(http://stackoverflow.com/questions/1939949/html-do-we -really-需要,不同-的文档类型) – 2010-01-08 14:07:19

3

这是带宽的浪费。没有人真的用它做任何事情。 (它是如此没用它甚至没有包含在HTML5。)

0

从技术上讲,它不会有所作为,因为假设CSS是由所有主要的浏览器上使用。

0

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