違いは、ユーザーエージェント文字列にあります。
「IE7」はIE7のユーザーエージェント文字列を正確にエミュレートし、MSIE7.0を示します。「IE8」はIE8のネイティブユーザーエージェント文字列を正確に使用しており、MSIE8.0とIE8で使用されているTridentレイアウトエンジンのバージョンであるTrident/4.0を示しています。
IE8-互換性はブラウザのネイティブユーザーエージェント文字列を使用しますが、「8.0」を「7.0」に変更します。
トライデントにはIE7より前のバージョン番号がなかったため、IE7の文字列には「Trident/xx」は表示されません。したがって、MSIE 7.0ユーザーエージェント文字列では、「Trident / 4.0」も存在する場合、互換表示で実行されているIE8であることがわかります。「Trident/xx」がない場合は、実際のIE7またはIE7モードのIE8(互換モードではない)のいずれかであることがわかります。
私の説明が十分に明確であることを願っています。以下にいくつかのユーザーエージェント文字列の例を示します。
IE7:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; MS-RTC EA 2; Tablet PC 2.0; .NET4.0C; .NET4.0E)
IE8:
Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; MS-RTC EA 2; Tablet PC 2.0; .NET4.0C; .NET4.0E)
IE8-互換性:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; FDM; MS-RTC EA 2; Tablet PC 2.0; .NET4.0C; .NET4.0E)