我可以将WebBrowser控件的呈现引擎更改为旧版本吗?

时间:2013-03-14 14:41:42

标签: vb.net winforms internet-explorer internet-explorer-9 webbrowser-control

我有一个带有webbrowsercontrol的应用程序。这个webbrowsercontrol将加载一个与IE9不兼容的页面。 (不能改变这个,因为它是由其他人制作的)默认情况下VB.NET 2010的webbrowser控件使用IE9 renderengine,并且可以在某种兼容模式下运行。不幸的是,即使在兼容模式下,页面也不起作用。有没有办法使用一个真正的IE7或IE8渲染引擎的webbrowser控件?谢谢

更新

解释问题:我有一个内置JAVA applet的页面。这个java applet有一个带文本框的弹出窗口。此文本框被强制保持在前面直到关闭。这在IE7和IE8中工作正常。在IE9中,但是如果我移动浏览器窗口或访问任何其他应用程序,此消息框将跳转到后面。并且不能再点击了。我的webbrowser(IE9运行任何模拟)不起作用。即使我模仿IE7或IE8,它也好像仍然在IE9上。

1 个答案:

答案 0 :(得分:2)

  

是否可以使用带有正版IE7或IE8渲染引擎的webbrowser控件?

是的,但它要求您将计算机上安装的Internet Explorer版本降级到版本7或8,这不会带来友好的安装体验。

问题是WebBrowser控件总是使用计算机上安装的IE版本,因为它只是将呈现委托给本机库shdocvw.dll,这与IE本身使用的相同。在您的情况下,似乎是IE 9.但是,默认情况下,它也在IE 7兼容模式下运行。您可以通过editing the registry更改此设置,但无法更改渲染引擎的版本。

不幸的是,这意味着你运气不好,因为在一台计算机上运行多个版本的IE不是,而且从来就不是支持的配置。它can be accomplished用于测试目的,但它需要额外的软件,版本不能很好地协同工作。当然,不足以支持独立的IE浏览器而另一个驱动.NET WebBrowser控件。

使用IE 9修复代码以使其正常工作是最佳选择。 IE 9代表了微软向符合标准的浏览器的缓慢发展,虽然它仍有一些怪癖,但值得支持。我知道你说网站代码是由“其他人”维护的,但我建议他们提交支持请求 - 他们的代码是错误的,需要修复。如果您(或他们)需要帮助,他们可以在Stack Overflow上询问我们的一些 code ninjas Web标准专家。

或者,您可以探索使用替代控件替换WebBrowser控件。 .NET Framework有几个好的,包装其他流行浏览器使用的渲染引擎。例如:

  • WebKit .NET 是Google Chrome浏览器和Apple Safari使用的WebKit引擎的包装器。
  • GeckoFX 是Mozilla Firefox使用的Gecko渲染引擎的包装器。
  • MozNet 是Gecko的替代包装器。

不幸的是,如果您正在处理的代码编写得如此糟糕以至于IE 9对标准兼容性的微弱尝试使其陷入困境,那么切换到另一个更符合标准的浏览器的渲染引擎将不太可能带来很成功。