Компонент веб-браузера - это 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);