2010-11-18 44 views
1
<link type="text/css" media="all" rel="stylesheet" href="./foo.css.txt" /> 


Firbug错误MIME类型:链接到CSS瓦特/ TXT扩展


样式表foo.css.txt未加载,因为它的MIME类型, “文本/纯”,不是“文本/ CSS”。


说明


的浏览器解释CSS为文本文档,而不是CSS,尽管任何努力迫使它的MIME通过浏览器。当然,在制作中,我将使用foo.css(不包括txt扩展名),但我认为这是可能的。它的工作原理为JavaScript:

<script type="text/javascript" src="./index.js.txt"></script> 


其他的想法


  • 设置type="css"不显示在Firebug的错误和页面验证,但是CSS不正确加载 - 我很确定这不是一个有效的MIME类型。我试图找到MIME类型关闭W3C的名单,但因为一切是很难找到/了解W3C

  • 这样确实与其他较冷门,扩展功能,如DAT:href="./foo.css.dat"

回答

5

当您在HTML中使用type属性时,您的意思是“当您获取此资源时,预计获取此类型的数据。”这允许用户代理(例如浏览器)避免请求他们知道他们无法处理的资源。对于CSS,您需要将其设置为text/css

当服务器响应请求时,HTTP Content-Type标题说“此内容这种类型”。它是规范的,对于CSS数据也必须设置为text/css

由于您使用了.txt文件,因此服务器(在默认配置中)表示该文件包含的数据为text/plain,因此它会告知浏览器。你不能从浏览器中覆盖它。

它为JavaScript的

浏览器,由于种种原因,往往会忽略对JavaScript服务器指定的内容类型。这可能被认为是这些浏览器中的一个错误。

镶嵌类型=“CSS”不显示在Firebug的错误和页面验证,但是CSS不正确加载 - 我敢肯定,这不是一个有效的MIME类型虽然

css不是注册的MIME类型,浏览器不会将其识别为可以理解的样式表语言,因此它不会尝试下载它。

我试图找到MIME类型关闭W3C的名单,但因为一切是很难找到/了解W3C

的W3C是不负责的MIME类型注册表,您可以找到http://www.iana.org/assignments/media-types/

+0

我认为我没有包括的真正问题是:'是否有可能让它在HTML页面中工作?我相当肯定我已经修改了Apache中txt文件的内容类型,但我想知道是否有一种快速而简单的方法将某些内容添加到“链接”元素。 - 我将要测试在动态加载CSS文件时也会发生什么情况。 – vol7ron 2010-11-18 20:46:10

+0

不,没有任何东西可以快速轻松地添加到链接元素,正如我所说:“您无法从浏览器中覆盖此项。” – Quentin 2010-11-18 20:49:30

0

如果你可以使用.php而不是.txt,你可以从文件本身设置类型。

+0

(请参阅我留给RDL的评论) – vol7ron 2010-11-18 20:43:13

+0

好吧。我能想到的另一种方法是通过Apache改变文件的处理方式,但是你声明你想远离这一点。 – Damien 2010-11-19 13:40:58

+0

是的,远离txt文件的任何特殊配置:)这仅仅是一个练习而不是生产案例。 – vol7ron 2010-11-26 15:50:38

0

尝试使用服务器端扩展一样.PHP

在这种情况下,你可以设置MIME类型的文档本身英寸

+0

这并不是为了让它能够工作,这是为了让它与“.txt”一起工作,而不用改变服务器配置。 – vol7ron 2010-11-18 20:42:42

1

如果有人仍然想这样做,可以用JavaScript来完成。下面是一个粗略的jQuery解决方案:

var sheet = $('<style></style>') 
$('head').append(sheet) 
sheet.load("./foo.css.txt") 
+0

有趣的示例 - 将文件作为文本检索并在其周围构建STYLE元素。这是一段时间,但我认为我这样做的原因是快速调试/浏览js/css文件,而不改变任何OS文件类型关联。这样,操作系统仍然可以执行'js'文件,但是会在记事本中打开一个'js.txt'文件。 CSS可能是为了保持一致。 – vol7ron 2012-05-16 14:26:45