1

我有以下代码可以根据浏览器在“head”中添加正确的 CSS 文件,

    string browserName = Request.Browser.Browser;
    string browserVersion = Request.Browser.Version;
    Control Head = Page.Master.FindControl("stuHead");

    if (Head != null)
    {
        if (browserName == "IE")
        {
            if (browserVersion == "6.0")
            {
                Head.Controls.Add(new LiteralControl("<link rel='stylesheet' rev='stylesheet' href='Home-IE6.css' type='text/css' media='all' />"));
            }
            else
            {

                Head.Controls.Add(new LiteralControl("<link rel='stylesheet' rev='stylesheet' href='Home-IE.css' type='text/css' media='all' />"));
            }
        }
        else
        {
            Head.Controls.Add(new LiteralControl("<link rel='stylesheet' rev='stylesheet' href='Home.css' type='text/css' media='all' />"));
        }
    }
    else
    {
        Response.Write("<link rel='stylesheet' rev='stylesheet' href='Home.css' type='text/css' media='all' />");
    }

当我在 IE8 中打开我的页面时,有时我会看到 Home.css,实际上我应该看到 Home-IE.css。我已确保 Head 不为空。不知道有没有人经历过这样的事情。任何意见表示赞赏。

4

1 回答 1

0

我想知道你为什么不在 HTML 部分做...有很多网站解释这个css 技巧

<!--[if IE]>
  <link rel="stylesheet" type="text/css" href="all-ie.css" />
<![endif]-->

<link rel="stylesheet" type="text/css" href="common.css" />

<!--[if IE]>
  <link rel="stylesheet" type="text/css" href="all-ie.css" />
<![endif]-->

<!--[if IE 6]>
  <link rel="stylesheet" type="text/css" href="ie-6.0.css" />
<![endif]-->

<!--[if lt IE 6]>
  <link rel="stylesheet" type="text/css" href="ie-5.0+5.5.css" />
<![endif]-->

只是为了指出您的代码中的某些内容,尝试学习如何重构和如何重用代码。

string browserName = Request.Browser.Browser;
string browserVersion = Request.Browser.Version;

if (Head != null)
{
    if (browserName == "IE")
    {
        if (browserVersion == "6.0")
            AddCSS("Home-IE6.css", false);
        else
            AddCSS("Home-IE.css", false);
    }
    else
        AddCSS("Home.css", false);
}
else
    AddCSS("Home.css", true);

...

void AddCss(string cssFile, bool write) {
    Control Head = Page.Master.FindControl("stuHead");
    String css = String.Format("<link rel='stylesheet' rev='stylesheet' href='{0}' type='text/css' media='all' />", cssFile);

    if(write)
        Response.Write(css);
    else
        Head.Controls.Add(new LiteralControl(css));
}
于 2009-07-27T06:34:06.117 回答