WebBrowser控件IE8兼容模式开/关切换

5
我在使用WebBrowser控件浏览网站时遇到了IE8兼容性问题。奇怪的是,有时候网站可以正常工作,但更可能是不能正常工作。我有时可以刷新页面,然后它也能正常工作。
在IE8中访问该页面时,我遇到了相同的CSS渲染问题,因此我切换到兼容模式,它就可以正确地刷新和呈现了。
是否有一种方法可以模拟WebBrowser控件的这种效果?我想能够点击一个按钮并像在Internet Explorer中那样切换模式。
这可行吗?如果可以,有人知道如何做吗?
谢谢。

更好的选择是,我会考虑另一种解决方案,即通过某种方式编辑注册表,以完全运行IE7而不是IE8。 - VsFox
3个回答

4

这篇IEBlog上的文章(链接)关于WebBrowser渲染模式和IE8是否有帮助?似乎你需要在注册表中使用一个键来设置特定于你的应用程序的渲染模式。


+1 当我正在输入时,警报栏弹出以加载1个新答案! - Andy E
非常感谢。我需要找到解决这个问题的方法,然后发现了这个问题,并且你提供了IEBlog文章的链接。现在我已经解决了这个问题! - Jon Robertson

4
我知道已经发布了注册表项答案,所以我想提供一个替代方案。
您是否拥有该站点并拥有运行它的服务器的权限?如果是这样,您可以设置X-UA-Compatible标头以便在站点/服务器上的每个页面上发送。有关信息和Apache / IIS7的链接,请参见http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx#Servers

谢谢建议,但我正在寻找一个更动态的解决方案。 - VsFox
我无法让注册表选项工作,但这个方法很好用。 - Gabe

0

您可以使用IE注册表中的“Internet功能控制”来强制应用程序内嵌的WebBrowser渲染模式:

HKEY_LOCAL_MACHINE或HKEY_CURRENT_USER
   SOFTWARE
      Microsoft
         Internet Explorer
            Main
               FeatureControl
                  FEATURE_BROWSER_EMULATION
                     YouApp.exe = (DWORD) 00000000 (请参见下面的值)
  • 值9999(0x270F)
    Windows Internet Explorer 9。无论!DOCTYPE指令如何,网页都以IE9标准模式显示。

  • 值9000(0x2328)
    Internet Explorer 9。包含基于标准的!DOCTYPE指令的网页以IE9模式显示。

  • 值8888(0x22B8)
    网页以IE8标准模式显示,无论!DOCTYPE指令如何。

  • 8000(0x1F40)
    包含基于标准的!DOCTYPE指令的网页以IE8模式显示。

  • 7000(0x1B58)
    包含基于标准的!DOCTYPE指令的网页以IE7标准模式显示。

如果您发现始终以当前安装版本运行WebBrowser有价值,则+1。

来源:http://msdn.microsoft.com/en-us/library/ee330730%28VS.85%29.aspx#browser_emulation


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接