在winforms应用程序中托管的MSIEs WebBrowser控件以兼容模式运行

时间:2010-08-24 07:31:23

标签: winforms internet-explorer internet-explorer-8 webbrowser-control ie8-compatibility-mode

我以winforms形式主持MSIE。不幸的是,它坚持在兼容模式下运行,无论我是否在独立IE中给它一个在IE8模式下运行的页面。这样做的结果是,在独立的MSIE中正确呈现的某些内容会在托管控件中完全错位并混乱。

除了文档类型等之外,还有一些神奇的方法告诉webbrowser我希望它以与在独立的MSIE中加载它相同的方式呈现页面吗?

我不想使用注册表项覆盖(http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx),因为我的表单是另一个应用程序的加载项的一部分。我不想更改主应用程序的IE行为,我不想为在该应用程序下运行的其他加载项更改它。我只希望这在我的表单中托管的浏览器中工作,而不是在整个应用范围内,而不是在整个流程范围内。

2 个答案:

答案 0 :(得分:10)

我没有对此进行测试,但是如何使用META标记以及HTTP-EQUIV属性将X-UA-COMPATIBLE值设置为IE=8,指示Web浏览器以IE 8标准模式显示页面。一个例子是:

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

以下article中的这一行似乎应该可行。

  

默认情况下,托管的应用程序   WebBrowser控件打开   IE7模式下基于标准的页面   除非页面包含   适当的X-UA兼容标头。   您可以通过添加名称来更改此设置   应用程序可执行文件的   FEATURE_BROWSER_EMULATION功能   控制键并设置值   相应

答案 1 :(得分:3)

要更改应用程序中运行的Web浏览器控件的默认行为以匹配IE本身的操作,您必须设置 FEATURE_BROWSER_EMULATION 功能控制键。

例如,您可以模仿IE8的行为(允许网站以IE8标准模式呈现),如下所示。

HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Internet Explorer \ Main \ FeatureControl

创建名为 FEATURE_BROWSER_EMULATION

的新密钥

在该密钥内,添加一个值为 8000 的新REG_DWORD,其中包含应用程序可执行文件的名称。 E.g:

"YourApp.exe" = dword 8000 (Hex: 0x1F40)

进一步详情如下: http://blogs.msdn.com/b/ie/archive/2009/03/10/more-ie8-extensibility-improvements.aspx