【问题标题】:Css ignoring everything after the first classCss在第一堂课后忽略一切
【发布时间】:2010-11-29 00:49:48
【问题描述】:

我正在使用this guide 创建一个 HTTPHandler,它结合了脚本和 css 文件以将它们作为一个请求传递。

基本上它将一堆 .css 文件读入一个字节数组,然后 response.writes 字节到客户端,内容类型为 text/css(或 text/javascript)

当使用 FireBug 时,CSS 似乎可以正常运行……它就在那里。但是,浏览器本身只会渲染组合操作中使用的第一个文件中的 CSS。

例子:

文件1.css: 正文 { 字体大小:20px; } h1 { 颜色:红色; }

文件2.css: div {边框:实心1px黑色; }

所有的 CSS 都可以通过 Firebug 在 CSS 选项卡中看到...但是 File2.css 中的类实际上并未应用于页面上的 div。如果我翻转文件的顺序,div 会得到一个边框,但 File1.css 中的任何内容都不会被应用。

Javascript 文件可以正常工作,但 CSS 让我很困惑!

编辑以显示从 Firebug 中复制的 CSS

body {
font-size:22px;
}
h1 {
color:Red;
text-decoration:underline;
}
div {
border:1px solid black;
}

这里是来自 NET 选项卡,生成的实际响应

ParamsHeadersPostPutResponseCacheHTML
Response Headersview source
Server  ASP.NET Development Server/9.0.0.0
Date    Mon, 29 Nov 2010 01:10:26 GMT
X-AspNet-Version    2.0.50727
Transfer-Encoding   chunked
Cache-Control   public, must-revalidate, proxy-revalidate, max-age=259200
Expires Thu, 02 Dec 2010 01:10:26 GMT
Content-Type    text/css
Connection  Close
Request Headersview source
Host    localhost:49598
User-Agent  Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12
Accept  text/css,*/*;q=0.1
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer http://localhost:49598/



body 
{
    font-size: 22px;

}

h1 
{
    color: Red;
    text-decoration: underline;
}div 
{
    border: solid 1px black;
}

新的发展。如果我在记事本中创建 .css 文件,一切正常。 VS2008在创建Stylesheet文件的时候会不会给文件添加一些看不见的东西?

FIDDLER TEXTVIEW(不知道多余的字符是从哪里来的。很有趣。

9a


body 
{
    font-size: 22px;

}

h1 
{
    color: Red;
    text-decoration: underline;
}div 
{
    border: solid 1px black;
}
0

【问题讨论】:

  • 你能贴出Firebug收到的实际css吗?
  • 正文 { 字体大小:22px; } h1 { 颜色:红色;文字装饰:下划线; } div { 边框:1px 纯黑色; }
  • 请编辑您的问题并使用代码块发布收到的 CSS,以便我们可以看到其格式正确
  • 请向我们展示来自 Firebug 的 Net 选项卡的原始 CSS 响应。 (虽然如果您在 CSS 选项卡中看到所有这些,则证明没有任何语法错误,所以我不确定是什么问题。)
  • 它可以在 Chrome 或 Safari 中使用吗?

标签: .net css concatenation minify


【解决方案1】:

GetFileBytes 中更改以下几行

    byte[] bytes = File.ReadAllBytes(physicalPath);
    // TODO: Convert unicode files to specified encoding. For now, assuming
    // files are either ASCII or UTF8
    return bytes;

    string content = File.ReadAllText(physicalPath, encoding);
    return encoding.GetBytes(content);

【讨论】:

  • 工作得很好。我仍然想追查为什么微软似乎将一些非 UTF8 字符放在通过 VS2008 生成的样式表中,但现在就可以了。谢谢。知道读取文本然后转换为字节的额外开销是否会引起注意?
  • 开销是文件长度的一个因素,但我会说它不会引起注意。假设您使用的是您提到的指南中定义的缓存机制,那么只有在缓存无效时才会产生开销。
【解决方案2】:

我不确定出了什么问题;如果 Firebug 的 CSS 选项卡看到 CSS,它应该会呈现。

尝试清除缓存 (Ctrl+F5) 并重新启动 Firefox。

尝试在服务器上的 CSS 文件之间添加换行符;这可能会有所帮助。

【讨论】:

  • 我也是这么想的。尝试了这些建议无济于事。这真的很奇怪。更糟糕的是,我以前用看似相同的代码完成了这项工作,没有任何问题。感谢您的观看!
  • 我很难过。如果你能给我看一个(非)工作演示,我可以进一步调查。
  • 目前我真的没有办法将它轻松发布到公共站点。如果/当我解决和/或没有解决它时,我会发表评论。
  • @Rco:我不这么认为。祝你好运。
猜你喜欢
  • 1970-01-01
  • 2010-12-31
  • 2017-04-03
  • 1970-01-01
  • 2014-12-05
  • 2016-01-09
  • 2019-01-29
  • 1970-01-01
  • 2014-09-18
相关资源
最近更新 更多