Microsoft アカウントでサインイン
サインインするか、アカウントを作成します。
こんにちは、
Select a different account.
複数のアカウントがあります
サインインに使用するアカウントを選択してください。

現象

Internet Explorer 9 以降のバージョンにおいて、クライアント スクリプト navigator.userAgent プロパティで取得した文字列の "MSIE x.x" 部分と IE が実際に Web サーバーへ送る User-Agent ヘッダーの文字列の "MSIE x.x" 部分のバージョンが異なることがあります。この事象は、HTTP 応答ヘッダー、またはページ上の Meta タグにおいて X-UA-Compatible によるドキュメント モードの指定があった場合に発生します。

例えば、ページに <meta http-equiv="X-UA-Compatible" content="IE=7"> の Meta タグがあり、IE9 のブラウザー モードが [Internet Explorer 9.0] の場合、IE9 が Web サーバーに送信する User-Agent ヘッダーの文字列はブラウザー モードにしたがって "Mozilla/5.0 (compatible; MSIE 9.0; … Trident/5.0)" になりますが、navigator.userAgent プロパティは X-UA-Compatible 指定にしたがって "Mozilla/4.0 (compatible; MSIE 7.0; … Trident/5.0; …)" になります。

そのため 、クライアント スクリプトで IE のバージョンを取得する目的で navigator.userAgent プロパティの "MSIE X.0" 部分を判断条件にすると、実際のバージョンと異なる判断になる可能性があります。

原因

IE9 以降、navigator.userAgent および navigator.appVersion プロパティの戻り値は、X-UA-Compatible によるドキュメント モードの指定に応じて MSIE バージョンを返すように動作変更しました。

IE9 以前では、実際に Web サーバーへ送信する User-Agent ヘッダーと navigator.userAgent プロパティは同じ文字列であり、X-UA-Compatible によるドキュメント モードの指定の影響は受けません。

回避策

クライアント スクリプトで IE9 であるかどうかを判断する場合は、navigator.userAgent プロパティの "MSIE x.0" のサブストリングではなく、"Trident/x.0" のサブストリングを条件にします。IE9 の場合は "Trident/5.0" で、IE8 の場合は "Trident/4.0" 、IE7 以前では "Trident" の文字列を含みません。

また、クライアント スクリプトでページのドキュメント モードを取得したい場合は、navigator.userAgent プロパティではなく、document.documentMode プロパティを利用 します。

状況

この動作は仕様です。

詳細

ユーザー エージェント文字列を理解する


userAgent property


ドキュメント互換性の定義


ヘルプを表示

スキルを磨く

トレーニングの探索 >

新機能を最初に入手

Microsoft Insider に参加する >

この情報は役に立ちましたか?

言語の品質にどの程度満足していますか?
どのような要因がお客様の操作性に影響しましたか?

ご意見をいただきありがとうございます。

×