Компонент веб-браузера - это IE7, а не IE8? Как это изменить?

Итак, у меня есть приложение С# Form, в котором используется компонент веб-браузера. Очевидно, Response.Write(Request.Browser.Version.ToString()); возвращает "7.0" при посещении моей тестовой страницы из компонента веб-браузера.

Как я могу заставить этот компонент веб-браузера использовать IE8?

Ответ 1

Кажется, вам нужно возиться с реестром в соответствии с этой статьей: -

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

Чтобы запустить элемент управления WebBrowser в стандартном режиме IE8, используйте следующее новое значение в реестре:

[(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. Когда приложение выбирает этот режим, элемент управления веб-браузера будет строго использовать строку User-Agent 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" относится к имени вашего приложения.

Ответ 2

Ответ может задерживаться и может не применяться к вашему делу, но, по словам Рона, ответьте на вопрос WPF.net4 webBrowser и Internet Explorer 8, вы также можете управляйте веб-браузером, если у вас есть контроль над обслуживаемой страницей:

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

Хотя это, по-видимому, не изменяет агент пользователя, кажется, что условные выражения, такие как

<!--[if lt IE 8]>

и CSS border-radius оцениваются должным образом, указывая, что самый последний движок (IE 9 в моей системе) фактически используется, несмотря на то, что пользовательский агент сообщает MSIE 7.0.

Ответ 3

Я сделал это, и он не работал, пока я не понял, что это потому, что я отлаживал визуальную студию.

В дополнение к настройке реестра для вашего приложения:

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);