注意:这篇文章是关于 WebBrowser 控制的,但是,对于所有新的
.NET 项目的主要解决方案正在使用
WebView2。
要了解更多信息,请查看此帖子:
网页浏览器控件
WebBrowser 控件使用安装在您操作系统上的相同 Internet Explorer 版本,但默认情况下不使用最新的文档模式,而是以兼容模式显示内容。
症状 - 作为症状,该站点在 Internet Explorer 或其他浏览器中正常运行,但 WebBrowser 控件无法很好地显示该站点,并且对于某些站点,它会显示脚本错误。 p>
解决方案 - 您可以在WebBrowser 控件中告诉WebBrowser 控件使用不兼容模式的最新文档模式。您可以按照说明here 使用注册表禁用该设置。
[参考:Browser Emulation]
使用代码应用浏览器仿真设置
如果要使用代码应用设置,请运行以下代码:
using (var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(
@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
true))
{
var app = System.IO.Path.GetFileName(Application.ExecutablePath);
key.SetValue(app, 11001, Microsoft.Win32.RegistryValueKind.DWord);
key.Close();
}
在上面的代码中,我使用了11001,表示IE11 Edge模式。
Internet Explorer 11. 网页以 IE11 边缘模式显示,
无论声明的 !DOCTYPE 指令如何。未能申报
!DOCTYPE 指令导致页面以 Quirks 加载。
手动应用浏览器仿真设置
打开注册表编辑器并浏览HKEY_CURRENT_USER,转到以下键:
Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
添加以下值:
"YourApplicationFileName.exe"=dword:00002af9
"YourApplicationFileName.vshost.exe"=dword:00002af9
(在旧版本的 Visual Studio 中,当您在 Visual Studio 中运行程序时,您还需要添加 vshost.exe 值。)
要创建条目,请右键单击右窗格的空白区域,然后在选择dword 值后出现的窗口中,选择十六进制并输入2af9:
在上述步骤中,我使用了11001,即 IE11 Edge 模式。
为 Windows 窗体使用 WebViewCompatible 控件
您也可以使用新的WebViewCompatible control for Windows Forms。您可以在此处查看使用的简单步骤:Replace WebBrowser control by new WebView Compatible control for Windows Forms。
WebViewCompatible 使用两个渲染引擎之一来支持更广泛的 Windows 客户端:
-
在 Windows 10 设备上,较新的 Microsoft Edge 呈现引擎用于嵌入一个视图,该视图呈现来自远程 Web 服务器、动态生成的代码或内容文件的格式丰富的 HTML 内容。
-
在运行旧版 Windows 的设备上,使用 System.Windows.Controls.WebBrowser,它提供基于 Internet Explorer 引擎的呈现。
-
注意:WebView2 是WebVeiw 和WebViewCompatible 的替代品。
设置 X-UA-Compatibile 元标记
如果您可以访问页面的html内容并且可以更改内容(例如它是本地html文件,或者该站点属于您自己),那么您可以在@中设置X-UA-Compatibile元标记987654350@点赞:<meta http-equiv="X-UA-Compatible" content="IE=Edge" />。
使用其他浏览器控件
您可以依赖其他浏览器控件,例如 CefSharp。