Компонент веб-браузера IE7 не IE8? Как это изменить?
Итак, у меня есть приложение C# Form, которое использует компонент веб-браузера. Видимо Response.Write(Request.Browser.Version.ToString()); возвращает "7.0" при посещении моей тестовой страницы из компонента веб-браузера.
Как я могу заставить этот компонент веб-браузера использовать IE8?
4 ответа
Похоже, вам нужно возиться с реестром в соответствии с этой статьей:
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" относится к имени вашего приложения.
Ответ может прийти поздно и может не относиться к вашему делу, но согласно ответу Рона на вопрос 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.
Я следовал этому, и это не работало, пока я не понял, что это потому, что я отлаживал в визуальной студии.
Поверх настройки реестра для вашего приложения:
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
System.AppDomain.CurrentDomain.FriendlyName, value);
Вы также должны установить его для своего приложения отладки (размещенного в Visual Studio):
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe",".vshost.exe"), value);
Вы также должны изменить реестр для своей системы, пока вы находитесь в отладке.
public void ChangeRegistery()
{
string key = @"HKEY_CURRENT_USER\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";
var value = 0x22B8;
Microsoft.Win32.Registry.SetValue(key, System.AppDomain.CurrentDomain.FriendlyName, value,Microsoft.Win32.RegistryValueKind.DWord);
#if DEBUG
Microsoft.Win32.Registry.SetValue(key, System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe", ".vshost.exe"), value, Microsoft.Win32.RegistryValueKind.DWord);
#endif
}