1

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

更新

解释问题:我有一个页面,里面有一个 JAVA 小程序。这个 java 小程序有一个带有文本框的弹出窗口。这个文本框被迫留在前面直到关闭。这在 IE7 和 IE8 中运行良好。但是在 IE9 中,如果我移动浏览器窗口或访问任何其他应用程序,此消息框会跳到后面。并且不能再点击了。我的网络浏览器(运行任何仿真的 IE9)不起作用。即使我模拟 IE7 或 IE8,它也会在 IE9 上运行。

4

1 回答 1

3

有没有办法使用带有正版 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 在标准合规方面的微弱尝试使其陷入瘫痪,那么切换到另一个更符合标准的浏览器的渲染引擎不太可能带来很大的成功。

于 2013-03-14T22:23:15.117 回答