【发布时间】:2021-08-13 07:29:22
【问题描述】:
一周来,我一直在尝试学习这个框架,但我仍然无法理解它的管道以及它是如何工作的。我深入研究了互联网上的每个教程,但它们很少。但是我找不到一个教程来解释一个基本的例子来引导我。它包含很多样板代码。您能否提供一个简单的应用程序来说明它的工作原理并逐步揭开它的神秘面纱?
【问题讨论】:
标签: webview2
一周来,我一直在尝试学习这个框架,但我仍然无法理解它的管道以及它是如何工作的。我深入研究了互联网上的每个教程,但它们很少。但是我找不到一个教程来解释一个基本的例子来引导我。它包含很多样板代码。您能否提供一个简单的应用程序来说明它的工作原理并逐步揭开它的神秘面纱?
【问题讨论】:
标签: webview2
学习微软的基本介绍教程here 会教你很多东西。不要只是阅读,做!从 WinForms、WPF 等中选择您最熟悉的 GUI 和语言平台。
请记住,WebView2 与之前的 CEF 和 CEFSharp 一样,是 Windows Native 和 Chromium 浏览器这两种庞大且不同的计算范式之间的桥梁。当然还有第三种范式,Web 服务器编程。 WebView2 仅涉及前两个,但在编写这些内容时,将它们牢记在心是很重要的。桥梁的复杂性是不可避免的,但您可以从简单开始。
您不必过多担心流程模型。要记住的重要一点是,WebView2 会在您的 Windows 程序第一次导航到网页或调用 EnsureCoreWebView2Async 时创建其浏览器进程。此后,您在所有嵌入式控件之间共享一组浏览器进程。 (您可以安排多组浏览器进程,但在真正需要之前不要这样做。)
首先在您的 Windows 应用中嵌入一个简单的浏览器控件。让它显示类似https://html5test.com 的内容,以说服自己它工作正常。
一旦您掌握了基本的嵌入,您就可以继续执行更复杂的任务。
您可以在嵌入式网页中调用 Javascript,like this.
您可以编写可从 Javascript 调用的 C# 或 C++ 代码。这称为HostObject。
还有一个需要注意的怪癖。 WebView2 类包装了一个名为 CoreWebView2 的内部类。一些主机到浏览器的操作和事件使用前者,一些使用后者。当我了解到这一点时,我依靠 Visual Studio 的代码完成弹出窗口来确定什么在哪里。
例如,设置webView2.Source 属性与调用webView2.CoreWebView2.Navigate() 函数的作用相同。为什么?与封装的 COM 对象有关,但您无需完全理解这一点即可做有用的事情。
您将从 Microsoft 的“入门”示例中了解所有内容。
不得不说:我很佩服微软,因为他们迟来但非常坚定地致力于使本机和浏览器计算环境协同工作。旧的 WebView 控件与其嵌入的已故 Internet Explorer 浏览器一样糟糕。
【讨论】:
所有使用 WebView2 的示例都在他们的 GitHub 页面上提供:
https://github.com/MicrosoftEdge/WebView2Samples
我发现这些示例足以满足使用控件的基础知识。
虽然该控件缺少某些功能,但这超出了您的问题范围。
【讨论】: