2

ユーザーが使用しているブラウザに応じて、css ファイルを条件付きで含めようとしています。そして、私はそれを 1 つの方法で動作させることができましたが、追加のスタイル シートが必要になるため、希望どおりには動作しませんでした。その仕組みとして、Site.Master ファイルに ie8 のスタイル シートを含めます。

<link href="~/Styles/ie8.css" rel="Stylesheet" type="text/css" />

次に、関数内の Site.Master.cs でPage_Load

    if (!(browser.Type == "IE8" ||
        browser.Type == "IE7" ||
        browser.Type == "IE6" ||
        browser.Type == "IE5"))
    {
        Page.Header.Controls.Add(new LiteralControl(
            "<link rel=\" stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/Styles/ie.css") + "\" />"));
    }

これは機能し、css は正しく、開発者ツールと互換性を ie10 で使用すると、正しい css が含まれていることがわかります。しかし、コードを同等のものに変更すると。うまくいきません。Site.Master:

<link href="~/Styles/ie.css" rel="Stylesheet" type="text/css" />

Site.Master.cs

    if ((browser.Type == "IE8" ||
        browser.Type == "IE7" ||
        browser.Type == "IE6" ||
        browser.Type == "IE5"))
    {
        Page.Header.Controls.Add(new LiteralControl(
            "<link rel=\" stylesheet\" type=\"text/css\" href=\"" + ResolveUrl("~/Styles/ie8.css") + "\" />"));
    }

にブレークポイントを設定するPage.Header.Controls.Addと、ie10 の互換モードで関数が呼び出されていることがわかります。しかし、開発ツールに移動して、ie8.css で定義されたクラスを使用する要素を探すと、含まれていなかったようにそこにありません。ここで何が起こっているのですか?

4

1 に答える 1

1

IE サーバー側をチェックする代わりに、条件付きコメントを使用する必要があります。

<!--[if lte IE 8]><link href="ie8.css" rel="Stylesheet" type="text/css" /><![endif]-->
<!--[if lte IE 7]><link href="ie.css" rel="Stylesheet" type="text/css" /><![endif]-->
于 2013-04-17T14:20:23.907 に答える