有没有办法使用带有正版 IE7 或 IE8 渲染引擎的 webbrowser 控件?
可以,但它要求您将计算机上安装的 Internet Explorer 版本降级到版本 7 或 8,这不会带来友好的安装体验。
问题是 WebBrowser 控件总是使用安装在计算机上的 IE 版本,因为它只是将渲染委托给本机库 shdocvw.dll,与 IE 本身使用的库相同。在您的情况下,这似乎是 IE 9。但是,默认情况下,它也在 IE 7 兼容模式下运行。您可以通过编辑注册表来更改此设置,但不能更改渲染引擎的版本。
不幸的是,这意味着你不走运,因为在一台计算机上运行多个版本的 IE 不是而且从来不是受支持的配置。它可以 用于测试目的,但它需要额外的软件,并且版本不能很好地协同工作。对于一个支持独立的 IE 浏览器而另一个驱动 .NET WebBrowser 控件来说,肯定不够好。
修复代码以在 IE 9 中正常工作是最佳选择。IE 9 代表了微软在标准兼容浏览器方面的缓慢进展,虽然它仍有一些怪癖,但值得支持。我知道你说过网站代码是由“其他人”维护的,但我建议向他们提交支持请求——他们的代码有问题,需要修复。如果您(或他们)在这方面需要帮助,他们可以在 Stack Overflow 上向我们的一些代码忍者网络标准专家咨询。
或者,您可以探索用替代控件替换 WebBrowser 控件。.NET Framework 有几个不错的,封装了其他流行浏览器使用的渲染引擎。例如:
- WebKit .NET是 Google Chrome 和 Apple Safari 使用的 WebKit 引擎的包装器。
- GeckoFX是 Mozilla Firefox 使用的 Gecko 渲染引擎的包装器。
- MozNet是 Gecko 的替代包装器。
不幸的是,如果您正在处理的代码写得如此糟糕,以至于 IE 9 在标准合规方面的微弱尝试使其陷入瘫痪,那么切换到另一个更符合标准的浏览器的渲染引擎不太可能带来很大的成功。