MIME类型。链接到CSS w a txt扩展

问题描述 投票:2回答:5
<link type="text/css" media="all" rel="stylesheet" href="./foo.css.txt" />

Firbug错误


样式表foo.css.txt没有被加载,因为它的MIME类型 "textplain "不是 "textcss"。

解释


浏览器将CSS解释为一个文本文档而不是CSS,尽管我们努力通过浏览器强制执行它的MIME。 当然,在生产中我将使用 foo.css (wo的txt扩展),但我认为这将是可能的。 它对JavaScript有效。

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

其他想法


  • 设置 type="css" 在Firebug中不显示错误,页面也能验证,但CSS不能正常加载--我很确定这不是一个有效的MIME类型。 我试着从W3C上找到一个MIME类型的列表,但是和其他东西一样,很难理解W3C的意思。

  • 这对其他不那么流行的扩展是有效的,比如dat.css.txt。href="./foo.css.dat"

html css mime
5个回答
6
投票

当你使用 type 在HTML中,你说的是 "当你获取这个资源时。期待 来获取这种类型的数据"。这允许用户代理(如浏览器)避免请求他们知道自己无法处理的资源。对于CSS,你需要将其设置为 text/css.

当服务器响应该请求时,HTTP Content-Type 头部写着 "此内容 的"。它是规范的,也必须设置为 text/css 的CSS数据。

因为您使用了一个.txt文件,服务器(在默认配置中)说该文件包含的数据是 text/plain 所以它告诉浏览器,。你不能从浏览器中覆盖这一点。

它适用于JavaScript

浏览器由于各种原因,往往会忽略服务器为JavaScript指定的Content-Type。这可能被认为是这些浏览器的一个错误。

设置type="css "在Firebug中不会显示错误,页面也会验证,但CSS不能正常加载--我很确定这不是一个有效的MIME类型。

css 不是一个注册的MIME类型,浏览器无法识别它是一种它能理解的样式表语言,所以它不会尝试下载它。

我试着从W3C上找到一个MIME类型的列表,但是和所有的东西一样,很难理解W3C的MIME类型。

W3C并不负责MIME类型注册表,你可以在以下网址找到它 http:/www.iana.orgassignmentsmedia-types


2
投票

如果有人还想这样做,可以用JavaScript来实现。这里有一个粗略的jQuery解决方案,如果你可以使用.php而不是.txt,你可以在文件中设置类型。

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

0
投票

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


0
投票

试试使用服务器端的扩展名,比如.php

在这种情况下,你可以在文档本身设置mime-type。


0
投票

我得到这个错误,因为我无意中漏掉了样式标签。

例如

<link rel="stylesheet"  href="lib/mycss.css" />

应该是:

<style><link rel="stylesheet"  href="lib/mycss.css" /></style>
© www.soinside.com 2019 - 2024. All rights reserved.