2012-12-13 6 views
5

私は大きなプロジェクトで作業しています。ユーザーがIEで互換性ビューを使用しているかどうかを判断する必要があります。
私はこのコードを使用しています。それは素晴らしい取り組んでいるイントラネットサイトのIE9互換モードが間違ったユーザーエージェント文字列を持っています

var agentStr = navigator.userAgent; 
var mode = null; 
if (agentStr.indexOf("Trident/5.0") > -1) { 
    if (agentStr.indexOf("MSIE 7.0") > -1) 
     mode = "IE9CV"; 
    else 
     mode = "IE9"; 
} else if (agentStr.indexOf("Trident/4.0") > -1) { 
    if (agentStr.indexOf("MSIE 7.0") > -1) 
     mode = "IE8CV"; 
    else 
     mode = "IE8"; 
} else 
    mode = "IE7"; 

、問題は、次のとおりです。
1 - イントラネット環境では、オプションの「互換表示で表示するイントラネットサイトは、」クライアントのブラウザでチェックされ、そして私ができることは何もありませんその
Compatibility View

約2 - があり、互換性ビューを検出するためのスクリプトのために問題はないだろうが、私はなぜ知らない、私は受信ユーザエージェントはIE 9のページがロードの場合、以下の本です互換表示

Mozilla/5.0 (compatible; MSIE 9.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) 

非常に同じページが

Mozilla/5.0 (compatible; MSIE 9.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) 

IE9

を搭載した場合、私はIE9互換表示について
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) 

を受けることがsouldものの、それは次のようになりますよう。
私はIE9互換性ビュー(期待どおり)を強制するときにこの最終結果を得ますが、それだけでロードすると、私はIE9標準と同じユーザーエージェントを取得します。だから私はユーザーがIE9の標準ビューまたは互換性のあるビューを持っているかどうかを判断する方法を見つけることができません。

自分自身を明確にしたかどうかはわかりませんが、大きなIEのバグのようです。
どうすればいいですか?誰もこの問題を経験しましたか?

これは状況をシミュレートする画面です: Compatibility View

+0

非常に奇妙な...あなたはそれが実際に確認され、「表示イントラネットサイト」との互換性モードでそれを示していますか?あなたが正しいので、MSIE 7.0を表示する必要があります。 IE9 Compモードの場合はTrident/5.0;UAgentがそれを表示している場合は実際には実際にはCompモードではないかもしれないからです。 –

+0

mcpDESIGNS最後の編集をチェック...状況をシミュレートした画像と私が得たレスポンスを追加しました=/ – rafaces

+0

@Christophこれは重複しているのではなく、別の問題です。私は最近多くの互換性を扱ってきましたが、私はこの問題についても知らなかった。この奇妙なイントラネットのチェックボックスの問題についてアドバイスをいただいているかどうかは、マイクロソフトにお問い合わせください。私はUAStringが正しいのでなければ気に入っていますが、本当にCompatibilityモードであるかどうかを知ることができるかどうかわかりません。 –

答えて

-1

互換モードは、ほとんどどこでもの痛みです! :)

しかし、ブラウザエージェントは簡単に騙されて信頼できないので、代わりに「機能の検出」を試みてください。

あなたはこの

EDITを行うために使用できるいくつかのするライブラリがあります:あなたの要件は互換表示でサイトにアクセスするユーザーは、使用することができます有効に阻止することである場合そのモードを無効にするには<META> tag/HTTP header.詳細はこちらを参照してください。

http://blogs.msdn.com/b/ie/archive/2008/08/27/introducing-compatibility-view.aspx

http://blogs.msdn.com/b/ie/archive/2008/06/10/introducing-ie-emulateie7.aspx

+0

私はあなたが意味することを知っています、そしてそれは完璧な解決策になります。ユーザーが互換性ビューを有効にしている場合、互換モードを検出してアクセスをブロックするアナリストが必要です。 – rafaces

+0

タグの更新を確認してください – BuddhiP

+0

すでにタグを使用してブラウザをIE9に設定しています: 問題は、互換モードの設定(イントラネット上)がブラウザモードの動作を上書きすることです。 – rafaces

関連する問題