web-dev-qa-db-ja.com

WebブラウザーコンポーネントはIE8ではなくIE7ですか?これを変更するには?

そのため、Webブラウザーコンポーネントを利用するC#フォームアプリケーションがあります。どうやらResponse.Write(Request.Browser.Version.ToString()); Webブラウザーコンポーネントからテストページにアクセスすると、「7.0」が返されます。

このWebブラウザーコンポーネントでIE8を使用するにはどうすればよいですか?

37
Chris

この記事のようにレジストリをいじる必要があるようです:-

http://blogs.msdn.com/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx

IE8標準モードでWebBrowserコントロールを実行するには、次の新しい値をレジストリに使用します。

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8000 (Hex: 0x1F40)

IE7標準モードで実行するには、次のレジストリ値を使用します。

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 7000 (Hex: 0x1B58)

IE8 RTMでは、新しい「強制」IE8標準モード値が追加されました。アプリケーションがこのモードを選択すると、WebブラウザーコントロールはIE8ユーザーエージェント文字列とブラウザーエミュレーションモードを厳密に使用します。また、ページを読み込むときに、組み込みの互換表示リストやユーザーが作成した互換表示リストなどのフォールバック機能も無視します。 「強制」IE8標準モードで実行するには、次のレジストリ値を使用します。

[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION] 
"MyApplication.exe" = dword 8888 (Hex: 0x22B8)

これらすべての例で、「MyApplication.exe」はアプリケーションの名前を指します。

34
Plip

回答が遅れてあなたのケースに当てはまらない場合がありますが、質問に対するRonの回答 WPF .net4 webBrowser and Internet Explorer 8 によると、Webブラウザーを制御することもできます提供されるページ:

<meta http-equiv="X-UA-Compatible" content="IE=Edge"/>

これは明らかにユーザーエージェントを変更しませんが、

<!--[if lt IE 8]>

およびCSS border-radiusは適切に評価されており、ユーザーエージェントがMSIE 7.0を報告しているにもかかわらず、最新のエンジン(私のシステムではIE 9)が実際に使用されていることを示しています。

28
Archimedix

私はこれに従いましたが、ビジュアルスタジオでデバッグしているためだと気づくまで機能しませんでした。

アプリケーションのレジストリを設定することに加えて:

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION", 
  System.AppDomain.CurrentDomain.FriendlyName, value);

また、デバッグ(ビジュアルスタジオでホストされる)アプリケーションにも設定する必要があります。

Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
  System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe",".vshost.exe"), value);
16
Pascal Ganaye