Web浏览器组件是IE7而不是IE8?怎么改变这个?

Chr*_*ris 37 c# webbrowser-control internet-explorer-8 winforms internet-explorer-7

所以我有一个利用Web浏览器组件的C#Form应用程序.显然是Response.Write(Request.Browser.Version.ToString()); 当我从Web浏览器组件访问我的测试页时返回"7.0".

如何使这个Web浏览器组件使用IE8?

Pli*_*lip 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)
Run Code Online (Sandbox Code Playgroud)

要在IE7标准模式下运行,请使用以下注册表值:

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

对于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)
Run Code Online (Sandbox Code Playgroud)

在所有这些示例中,"MyApplication.exe"指的是您的应用程序的名称.


Arc*_*dix 28

答案可能会迟到,可能不适用于您的情况,但根据Ron对WPF .net4 webBrowser和Internet Explorer 8问题的回答,如果您可以控制所提供的页面,您还可以控制Web浏览器:

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
Run Code Online (Sandbox Code Playgroud)

虽然这显然不会改变用户代理,但似乎条件似的

<!--[if lt IE 8]>
Run Code Online (Sandbox Code Playgroud)

border-radius正在对CSS 进行正确评估,表明尽管用户代理报告了MSIE 7.0,但实际上仍在使用最新的引擎(我系统上的IE 9).


Pas*_*aye 16

我确实遵循了这一点,直到我意识到这是因为我在visual studio中进行调试才有效.

除了为您的应用程序设置注册表之外:

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

您还应该为调试(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);
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用System.AppDomain.CurrentDomain.FriendlyName来获取应用程序名称,而不是对其进行硬编码。 (2认同)