为什么在外部CSS中使用元标记Content-Style-Type?

ott*_*akt 10 html

浏览微软样本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" />
Run Code Online (Sandbox Code Playgroud)

为什么链接标签说明了这一切时的元标记?我错过了什么吗?

bob*_*nce 18

您理论上需要Content-Style-Type设置的原因是内联样式属性:

<div style="color: red;">
Run Code Online (Sandbox Code Playgroud)

那个样式语言是什么?与<style><link rel="stylesheet">标签不同,没有type属性机制来告诉浏览器它是什么语言:因此文档全局Content-Style-Type.

这同样适用于Content-Script-Type和内联事件处理程序属性:

<div onclick='alert("hello")'>
Run Code Online (Sandbox Code Playgroud)

那是什么语言?它在JavaScript和VBScript中实际上同样有效; 在IE中它也可能是.从理论上讲,你应该给浏览器一个Content-Script-Type标题/元来告诉它.即使使用普通的旧JavaScript,您也可能希望通过设置类型参数来更改方言,例如text/javascript;version=1.6e4x=1(如果您想使用E4X XML文字,而不是因为它们是一个卑鄙的错误).

在实践中,这一切都没有任何用处,因为默认的CSS是你可以实际使用的唯一样式语言,许多浏览器Content-Style-Type无论如何都不会引起任何关注,也没有任何浏览器可以关注Content-Script-Type.

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


zom*_*bat 14

"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文档实际上声称具有使用样式属性但未定义默认样式表语言的元素的文档是不正确的文档.然而,我从未在验证器中看到过这个问题.

  • 微软......"热心尝试遵守标准"......我错过了什么?呵呵.+1很棒的答案. (3认同)