gpt4 book ai didi

c# - 如何让 WebBrowser 控件显示现代内容?

转载 作者:行者123 更新时间:2023-11-27 22:51:29 26 4
gpt4 key购买 nike

我创建了一个使用 WebBrowser 控件的 Winforms 应用;我动态分配它的 Uri。它工作了一段时间,但现在我收到了这条消息:

您似乎使用了不受支持的浏览器。较旧的浏览器可能会危及您的安全、速度较慢且无法使用较新的 Google map 功能。要访问 Google map ,您需要更新到现代浏览器。

最后两个词是一个链接,在那个链接之后,我看到:

您目前正在使用... IE 11

那么,好的,WebBrowser 组件使用 IE 11;我该如何改变它?

我的机器设置为使用 Chrome 作为浏览器;也许控件应该使用您当前的浏览器是什么?我不知道这是否可能/可行。

更新

好的,我愿意尝试 Reza 的建议。但是当我导航到 regedit 中的指定位置,并在右 Pane 中右键单击以添加一个新条目时,它有三个选项:

键、字符串值、二进制值

我认为字符串值是“.exe”字符串,二进制值是“dword”值,但“Key”值应该是什么?

最佳答案

Note: The post is about WebBrowser control, however, for all the new.NET projects the main solution is usingWebView2.To learn more, take a look at this post:

网页浏览器控件

WebBrowser 控件使用安装在操作系统上的相同 Internet Explorer 版本,但默认情况下它不使用最新的文档模式,而是以兼容模式显示内容。

症状 - 作为一种症状,该站点在 Internet Explorer 或其他浏览器中正常运行,但 WebBrowser控件不能很好地显示站点,对于某些站点,它显示脚本错误。

解决方案 - 您可以告诉 WebBrowserWebBrowser 中控制使用没有兼容模式的最新文档模式控制。您可以按照说明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 边缘模式。

Internet Explorer 11. Webpages are displayed in IE11 edge mode,regardless of the declared !DOCTYPE directive. Failing to declare a!DOCTYPE directive causes the page to load in 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 值。)

要创建条目,请右键单击右侧 Pane 的空白区域,然后在选择 dword 后出现的窗口中值,选择十六进制并输入 2af9 :

enter image description here

在上面的步骤中,我使用了 11001这意味着 IE11 边缘模式。

为 Windows 窗体使用 WebViewCompatible 控件

您还可以使用新的 WebViewCompatible control for Windows Forms .您可以在此处查看简单的使用步骤:Replace WebBrowser control by new WebView Compatible control for Windows Forms .

WebViewCompatible使用两个呈现引擎之一来支持更广泛的 Windows 客户端:

  • 在 Windows 10 设备上,较新的 Microsoft Edge 呈现引擎用于嵌入一个 View ,该 View 呈现来自远程 Web 服务器、动态生成的代码或内容文件的格式丰富的 HTML 内容。

  • 在运行旧版 Windows 的设备上,使用 System.Windows.Controls.WebBrowser,它提供基于 Internet Explorer 引擎的呈现。

  • 注意: WebView2 WebView 的替代品和 WebViewCompatible .

设置 X-UA-Compatible 元标记

如果您有权访问页面的 html 内容并且可以更改内容(例如它是本地 html 文件,或者该站点属于您自己),那么您可以设置 X-UA-Compatibile head 中的元标记喜欢:<meta http-equiv="X-UA-Compatible" content="IE=Edge" /> .

使用其他浏览器控件

您可以依赖其他浏览器控件,例如 CefSharp .

关于c# - 如何让 WebBrowser 控件显示现代内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59427144/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com