所以我有一个使用Web浏览器组件的C#Form应用程序。显然是Response.Write(Request.Browser.Version.ToString());当我从Web浏览器组件访问我的测试页时返回“7.0”。
如何使此Web浏览器组件使用IE8?
答案 0 :(得分:33)
根据这篇文章,你似乎需要摆弄注册表: -
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 User-Agent字符串和浏览器仿真模式。它还会在加载页面时忽略回退功能,例如内置兼容性视图列表和用户生成的兼容性视图列表。要在“强制”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”指的是您的应用程序的名称。
答案 1 :(得分:27)
答案可能会迟到,可能不适用于您的情况,但根据Ron对问题WPF .net4 webBrowser and Internet Explorer 8的回答,如果您可以控制所提供的页面,您还可以控制网络浏览器:
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
虽然这显然不会改变用户代理,但似乎像
这样的条件<!--[if lt IE 8]>
正在正确评估和CSS border-radius
,表明尽管用户代理报告了MSIE 7.0,但实际上仍在使用最新的引擎(我系统上的IE 9)。
答案 2 :(得分:16)
我确实遵循了这一点,直到我意识到这是因为我在视觉工作室进行调试才开始工作。
除了为应用程序设置注册表之外:
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
System.AppDomain.CurrentDomain.FriendlyName, value);
您还应该为调试(visual studio hosted)应用程序设置它:
Registry.SetValue(@"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION",
System.AppDomain.CurrentDomain.FriendlyName.Replace(".exe",".vshost.exe"), value);
答案 3 :(得分:0)
您也应该在调试时更改系统的注册表。
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
}