私は大規模なプロジェクトに取り組んでおり、ユーザーが IE で互換表示を使用しているかどうかを判断する必要があります。
私はそれを行うためにこのコードを使用しています。
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 - イントラネット環境では、クライアントのブラウザで [イントラネット サイトを互換表示で表示する] オプションがオンになっていますが、それについては何もできません。
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)
ページがIE9でロードされた場合とまったく同じです。
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/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)
IE9 互換表示用。
IE9互換ビューを強制すると(予想どおり)、この最後の結果が得られますが、それが自動的にロードされると、IE9標準と同じユーザーエージェントが送信されます。そのため、ユーザーが IE9 標準ビューまたは互換ビューを持っているかどうかを判断する方法がわかりません。
私が自分自身を明確にしたかどうかはわかりませんが、IE の大きなバグのように見えます。
どのように進めればよいですか?誰もこの問題を経験しましたか?
これは、状況をシミュレートする画面です。