努力掌握WebView2

Struggling to grasp WebView2

一周以来,我一直在为一份工作而努力学习这个框架,但我还不能理解它的流程,以及它是如何工作的。我深入研究了互联网上的每个教程,但它们很少。但是我找不到一个教程来通过一个基本的例子来解释它。它包含大量样板代码。您能否提供一个简单的应用程序来说明它的工作原理并逐步揭开它的神秘面纱?

使用 WebView2 的所有示例都在此处的 GitHub 页面上提供:

https://github.com/MicrosoftEdge/WebView2Samples

我发现这些示例对于使用控件的基础知识来说已经足够好了。

尽管该控件缺少一些功能,但这超出了您的问题范围。

完成 Microsoft 的基本介绍教程 here 会教给您很多东西。不要只是阅读,做!从 WinForms、WPF 和其他一些语言中选择您最熟悉的 GUI 和语言平台。

请记住,WebView2 与之前的 CEF 和 CEFSharp 一样,是两个庞大且不同的计算范式之间的桥梁,Windows 本机浏览器和 Chromium 浏览器。当然,还有第三种范例,即 Web 服务器编程。 WebView2 仅涉及前两个,但在编写这些内容时将它们牢记在心很重要。桥的复杂在所难免,但可以从简单做起。

您不必过分担心流程模型。要记住的重要一点是,WebView2 在您的 Windows 程序第一次导航到网页或调用 EnsureCoreWebView2Async 时创建其浏览器进程。此后,您在所有嵌入式控件之间共享一组浏览器进程。 (您可以安排多组浏览器进程,但除非真正需要,否则不要这样做。)

首先在您的 Windows 应用程序中嵌入一个简单的浏览器控件。让它显示类似 https://html5test.com 的内容,以说服自己它工作正常。

一旦掌握了基本的嵌入,就可以继续执行更复杂的任务。

您可以在嵌入式网页中调用Javascript,like this.

您可以编写可从 Javascript.That 调用的 HostObject.

中调用的 C# 或 C++ 代码

还有一个问题需要注意。 WebView2 class 包装了一个名为 CoreWebView2 的内部 class。有些主机到浏览器的操作和事件使用前者,有些则使用后者。当我了解到这一点时,我依靠 Visual Studio 的代码完成弹出窗口来找出位置。

例如设置webView2.Source property does the same thing as calling the webView2.CoreWebView2.Navigate()函数。为什么?与包装的 COM 对象有关,但您不需要完全理解它来做有用的事情。

您将从 Microsoft 的入门示例中了解所有内容。

不得不说:我很钦佩微软让本机和浏览器计算环境协同工作的迟来但非常坚定的承诺。旧的 WebView 控件和它嵌入的已故的 Internet Explorer 浏览器一样,都是一个拙劣的工作。