VB.NET中WebBrowser控件的渲染模式问题

VB.NETWinForm或WPF应用程序中,如果需要加载一个网页,通常会使用WebBrowser控件。默认情况下,这个控件会使用IE7的渲染模式,无论是在WPF应用程序还是WinForms应用程序中使用它。这可能会导致加载的网页看起来和预期的不一样,或者在某些情况下,可能会收到一个提示,要求更新网络浏览器(IE)。

有几种方法可以覆盖默认的渲染行为:

  • 使用IE X-UA-Compatible Meta头部
  • 使用特定应用程序的FEATURE_BROWSER_EMULATION注册表键

如果可以控制网页的内容,最简单的方法是使用IE Edge模式头部。这是第一种方法的示例:

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

也可以指定IE的版本:

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

接下来,将展示如何使用第二种方法,通过VB.NET类(WebBrowserUpdater)在代码中应用。

使用代码:

Public Class WebBrowserUpdater '...省略部分代码... End Class

这个类可以帮助运行应用程序,使用主机机器上安装的最新版本的IE

需要注意的要点:

  • WebBrowserUpdater需要确定它是否在处理32位或64位应用程序。这是通过以下方法完成的:
Public Shared Function InternalCheckIsWow64() As Boolean '...省略部分代码... End Function

注册表值的设置在这里完成:

Private Shared Sub FixBrowserVersion_Internal(ByVal root As String, ByVal appName As String, ByVal ieVer As Integer) '...省略部分代码... End Sub

使用此类的示例:

WebBrowserUpdater.FixBrowserVersion()

或者指定应用程序名称:

WebBrowserUpdater.FixBrowserVersion("AppName")

或者指定应用程序名称和IE版本:

WebBrowserUpdater.FixBrowserVersion("AppName", IEVer)

请记住,IEVer必须是之前向展示的允许值之一。

最后但并非最不重要的一点是,由于设置了注册表值,为了避免任何错误,需要有提升的权限才能应用更改。将以下内容添加到应用程序清单中:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485