3

I have a simple html page as follow:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>test title</title>
 <link href="style.css" rel="stylesheet" type="text/css" />

 </head>
 <body>
     <span class="test">Test</span>
 </body>
 </html>

and the style.css is follow:

.test{
 color:yellow;
}

I suspect that the output be a yellow test, but it is a black one.

If I use this link:

http://url/style.css

I can see the content of CSS so I believe the client can read it.

I am using thttpd as web server on an embedded system.

screen capture of what IE developer shows: No style is applied

which shows that both html and css are getting by IE.

style is taken from server

4

2 回答 2

3

您说您正在嵌入式系统上使用 thttpd。鉴于您的代码很好,我希望发生的事情是 IE 忽略了您的样式,因为您的 Web 服务器没有为它们提供正确的内容类型。

来自MSDN 上的MIME 类型和样式表:

从 IE9 标准模式开始,样式表将被忽略(不应用),除非它们以“text/css”MIME 类型交付。

因此,我建议查看您的 thttpd 配置,看看您是否可以添加说明以将“text/css”MIME 类型应用于 .css 文件。

更新:我可以从您的屏幕截图中看到样式表正在提供“text/html”,这几乎证实了我的诊断。CSS 文件应作为“text/css”提供。

thttpd 的文档建议您只能在编译时更改它支持的 MIME 类型,因此要解决此问题,您需要重新编译。

我可以看到的 thttpd 的最新版本 2.25b 在其 mime_types.txt 中将 CSS 文件正确标记为 text/css,因此您可以获取最新版本并使用它。

或者,添加该行

css text/css

到现有版本的 mime_types.txt,如果您是从源代码编译的,然后重新编译。thttpd Makefile 使用该文本文件将每个文件扩展名的正确 MIME 类型编译到二进制文件中。(请注意,文件格式在文件扩展名和 MIME 类型之间需要一个制表符。)

(鉴于嵌入式系统通常不能很好地处理多个连接,您也可以将样式嵌入<style>HTML 文档标题中的元素中,这将 (a) 与您当前的设置一起使用,并且 (b) 保存发出第二个请求以获取单独的 CSS 文件。)

于 2014-01-10T17:00:46.397 回答
2

您的 HTML 页面或 css 没有任何问题,所以我认为您的浏览器要么无法获取 css(可能是 URL 错误?),要么它正在使用 css 的缓存版本。(如果使用 IE 则尝试 CTRL+f5)

如果这没有帮助,那么根据您使用的浏览器,我建议您打开开发人员工具并跟踪返回的网络调用和状态代码。EG for Internet Explorer,按 F12,切换到网络选项卡并启用“开始捕获”。要更详细地了解幕后发生的事情,Fiddler是一个很棒的工具。

于 2014-01-10T16:49:06.610 回答