2012-02-24 5 views
2

HttpBrowserCapabilitiesオブジェクトを使用してブラウザのバージョンと特定の機能を確認できますが、ブラウザがレンダリングに使用しているドキュメントモードがあります?HttpBrowserCapabilitiesオブジェクトを使用してサーバー側でIEドキュメントモードを検出することはできますか?

JavaScriptのプロパティの同等document.documentMode

モードはdeveloper tools

を経由して変更することができます更新

私はIE7のために別のスタイルシートを含めることを期待して、以下のようなものを使用していました私の剃刀レイアウトページで...

@if (ViewContext.IsBrowserOlderThanIE8()) { 
<link href="Ie7.css" rel="stylesheet" type="text/css" /> 
} 

機能内IsBrowserOlderThanIE8ブラウザのバージョンを検出できますが、クライアントがどのドキュメントモードを使用しているかを知るには不十分です。ドキュメントモードでは、使用される実際のレンダリングエンジンでより多くのバーニングがあります。

+0

「単純」を定義します。それは機能の検出を行い、ブラウザにクッキーを設定します。サーバー上でCookieを読み取ります。 – anddoutoi

+0

この場合、「単純」には比較の意味はありません。私はちょうどスピーチの形としてそれを使用しました。そこにはいけません。申し訳ありません。私は本当に方法がある限り、それがどれくらい難しいか簡単に気にしません!あなたの提案をありがとう。 –

+0

document.documentMode情報をサーバー側に渡すことはできませんか? – Etch

答えて

0

あなたは、クライアントの要求に正しいCSSファイルを持って、その後、クライアント側でそれを判断することができます...

<head> 
<script type="text/javascript>" 
    ... 
    var choice; 
    if (condition) { 
     choice = 'ie7'; 
    } else { 
     choice = 'default'; 
    } 
    document.writeln('<link type="text/css" rel="stylesheet" href="' + choice + '.css" />'); 
</script> 
... 
</head> 

そしてもちろん、あなたはその小さな「セレクタ」スクリプトをむしろ、付属のファイルを作ることができますあなたが作る各ページで実際にそれをインラインでコーディングするよりも。

+0

これは非常に良い点です。なぜクライアント側がうまくいけばこのサーバー側を試してみるのも気にならなかったのですが、私はこれまでとは違う方法で解決したと思います。 –

3

Request.UserAgentを使用すると、機能フラグが設定された文字列を取得できるはずです。

これらの2つのリンクを確認してください。

Understanding User-Agent strings

User-Agent Properties

編集

私は詳細を追加考えました。基本的にUser-Agent文字列のTridentトークンはブラウザのREALバージョンであり、MSIEトークンは使用しているブラウザモードです。最初のリンクを使用して、HTTPヘッダがどのように見えるかを調べるために、fiddlerを実行することで、これを簡単にチェックすることができます。

MORE EDIT 私はその後、互換モードボタンを押すと表示さシオマネキをオンにし、IE9.0とwww.yahoo.comを参照し、User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0) を参照してください。

User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; Zune 4.7) 

はどのようにトライデントを参照してください。 = 5.0の両方の時間が、MSIEは9.0、次に7.0ですか?

URLに応じて、この情報を強制する方法があります。たとえば、Webアプリケーション上で私は現在いくつかのさまざまな理由からIE7互換モードを強制しています。

+0

これをチェックしてみましょう... –

+0

サーバサイドでは、 'HttpRequest'の' UserAgent'プロパティを見ると、 'Mozilla/5.0(互換性があります; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; BOIE9; ENGB)」を選択してください。あなたはそれを見ていませんか? –

+0

メイン回答で応答を追加 – Etch

1

いいえサーバーサイドコードでドキュメントモードを判断することはできません。 互換性を確認できます。モードでは、ユーザーエージェントのトライデント値を使用します。デフォルトでは、ドキュメントモードです。キーワード.DEFAULTS..ITは、F12を介して変更されることがあります。 その後、ユーザーはドキュメントモードを再び互換性のあるものに変更します。モードを変更すると、変更を見ることができなくなります。

関連する問題