标签: webview2

VB.Net Webview2 如何获取 html 源代码?

我成功地在我的 VB.net (Visual Studio 2017) 项目中的 WebView2 上显示了一个网站,但无法获取 html 源代码。请告诉我如何获取 html 代码。

我的代码:

Private Sub testbtn_Click(sender As Object, e As EventArgs) Handles testbtn.Click
        WebView2.CoreWebView2.Navigate("https://www.microsoft.com/")
End Sub

Private Sub WebView2_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView2.NavigationCompleted
        Dim html As String = ?????
End Sub
Run Code Online (Sandbox Code Playgroud)

确实提前感谢您的建议。

vb.net webview2

4
推荐指数
1
解决办法
5585
查看次数

如何覆盖右键单击 WebView2 控件时出现的 ContextMenu?

如何覆盖右键单击 WebView2 控件时出现的 ContextMenu?

当您右键单击 WebView2 控件时,会出现带有“刷新”、“另存为”等选项的标准上下文菜单。

如何让我自己的 ContextMenuStrip 出现而不是在鼠标右键单击期间出现?

.net webbrowser-control webview webview2

4
推荐指数
2
解决办法
2489
查看次数

Microsoft Edge WebView2 - 错误:命名空间“Microsoft”中不存在类型或命名空间名称“Web”

我正在编写这个官方教程:在 WPF (Preview) 中使用 WebView2 入门

  1. 已经安装Microsoft Edge (Chromium) Canary channel在我的Windows 10 pro -ver 1903.
  2. .NET Core 3.1 - WPF在最新版本上创建了一个项目VS2019 - ver16.6.3
  3. 已安装 Nuget 包 Microsoft.Web.WebView2 -Version 0.9.538

但是,根据教程第 3 步中的说明,当我xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"<Window/>标记中添加命名空间MainWindow.xaml并构建 (F5) 应用程序时,我using Microsoft.Web.WebView2.Wpf;MainWindow.g.cs文件行收到以下错误:

错误

错误 CS0234 命名空间“Microsoft”中不存在类型或命名空间名称“Web”(您是否缺少程序集引用?)

主窗口.xaml

<Window x:Class="WpfWebView2TEST.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:wv2="clr-namespace:Microsoft.Web.WebView2.Wpf;assembly=Microsoft.Web.WebView2.Wpf"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

问题:错误的原因可能是什么,如何解决?

c# wpf webview2

4
推荐指数
1
解决办法
3431
查看次数

绕过 WebView2 中显示的 Kestrel 服务器的无效 SSL 证书

给定

  • WPF 应用程序启动 Kestrel 服务器
  • Kestrel 聆听http://0.0.0.0:5000https://0.0.0.0:6000
  • Kestrel 指向静态 HTML 文件index.html
  • WPF显示指向的浏览器控件WebView2https://127.0.0.1:6000/index.html

结果

  • 如果 WebView2 指向http://127.0.0.1:5000/index.html一切正常
  • 如果指向 WebView2,https://127.0.0.1:6000/index.html我会收到有关不受信任的证书的错误

问题

  • 是否可以在 Kestrel 或 WebView2 中禁用或忽略本地主机的 SSL 验证

不应触及 Windows 设置,例如将“localhost”证书标记为“msmc”中受信任的证书或生成自签名证书,因为此 WPF 应用程序应该在不同的计算机上运行。

换句话说,一定有比本文描述的更简单的方法

红隼

公共类Web服务器
{
  公共静态任务运行()
  {
    var 配置 = new ConfigurationBuilder().Build();

    var url = 新[]
    {
      “http://0.0.0.0:7000”,
      “https://0.0.0.0:8000”
    };

    var 环境 = WebHost
      .CreateDefaultBuilder(新字符串[0])
      .UseConfiguration(配置)
      .UseUrls(url)
      .UseContentRoot(Directory.GetCurrentDirectory())
      .UseIISIntegration()
      .UseStartup<WebStartup>();

    返回环境.Build().RunAsync();
  }
}

公共类 WebStartup
{
  公共 IConfiguration 配置 …

.net-core webview2

3
推荐指数
1
解决办法
2417
查看次数

WebView2 - 获取属性

我试图理解 WebView2 中的架构。使用 WebBrowser,我曾经从 GetElementById 返回的结果中获取属性,如下所示:Document.GetElementById("DropDownList").GetAttribute("selectedIndex")

我知道ExecuteScriptAsyncWebView2 中的 可以运行 JavaScript 并以字符串形式返回结果。但是,它看起来不知道如何从元素获取属性。下面的代码返回一个空值。尽管如此, getElementById 返回正确的结果。
ExecuteScriptAsync("document.getElementById('DropDownList').getAttribute('selectedIndex')")

我的语法不正确吗?如何获取WebView2中的属性?我们是否必须在脚本中编写一个函数并从主机调用它?

谢谢

javascript webview2

3
推荐指数
1
解决办法
7823
查看次数

WebView2 下载进度

需要通过WebView2获取下载进度。https://learn.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2downloadoperation?view=webview2-dotnet-1.0.865-prerelease

async void InitializeAsync()
{
  var env = await CoreWebView2Environment.CreateAsync(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Microsoft\EdgeCore\92.0.887.0");
  await webView.EnsureCoreWebView2Async(env);
  webView.CoreWebView2.DownloadStarting += webView_DownloadStarting;
  webView.CoreWebView2.Navigate("downloadURL");
}

private void webView_DownloadStarting(object sender, CoreWebView2DownloadStartingEventArgs e)
{           
  e.ResultFilePath = filename;
  public event EventHandler<object> BytesReceivedChanged; <-- Need this event for print bytes to webView_BytesReceivedChanged
  public event EventHandler<object> StateChanged; <-- Need this event for print download state to webView_StateChanged
}

private void webView_BytesReceivedChanged(object sender, CoreWebView2DownloadStartingEventArgs e)
{
  Console.WriteLine(e.DownloadOperation.BytesReceived); // Bytes received
  Console.WriteLine(e.DownloadOperation.TotalBytesToReceive); // Total bytes to receive
}

private void webView_StateChanged(object sender, …
Run Code Online (Sandbox Code Playgroud)

c# download winforms webview2

3
推荐指数
1
解决办法
5809
查看次数

哪个 WebView2 事件/函数可以用来替换 ScriptNotify Webview 事件?

今天,我决定将一个 VB.net 应用程序中的WebView控件迁移到另一个控件WebView2

我已经安装WebView2NuGet更改了声明和初始化行(我的 VB 程序中只有 4 行,因为我使用 2 个 WebView2)。

当我构建我的应用程序时,Visual Studio 2019表明该ScriptNotify事件不是WebView2!

Private Sub wvSelect_ScriptNotify(
    sender As Object, 
    e As WebViewControlScriptNotifyEventArgs) Handles wvSelect.ScriptNotify
Run Code Online (Sandbox Code Playgroud)

使用旧WebView控件,该事件是使用windows.external.notifyJavascript 函数生成的。

function clickPlus(e) { window.external.notify("+PLUS:"); }
Run Code Online (Sandbox Code Playgroud)

哪个事件正在取代控制ScriptNotify中的事件WebView2

我有兴趣了解新事件以及如何从 Javascript 调用该事件。

vb.net winforms webview2

3
推荐指数
1
解决办法
6947
查看次数

设置 Webview2 标头或 cookie

我想为 Webview2 发出的所有请求设置自定义标头。请帮忙。基本上我想在 webview 本身中加载网站,因此我需要在所有请求上收到我的标头。

MainWindow.xaml.cs

using Microsoft.Web.WebView2.Core;
using System;
using System.Windows;

namespace O2C
{
    public partial class MainWindow : Window
    {

        public MainWindow()
        {
            InitializeComponent();
        }

        private void webView_CoreWebView2InitializationCompleted(object sender, Microsoft.Web.WebView2.Core.CoreWebView2InitializationCompletedEventArgs e)
        {
            webView.CoreWebView2.Settings.UserAgent = "O2C-Web";
            webView.CoreWebView2.Settings.AreDefaultContextMenusEnabled = false;
            webView.CoreWebView2.Settings.AreBrowserAcceleratorKeysEnabled = false;
        }

        private void WebView_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
        {
            e.RequestHeaders.SetHeader("X-Authorization", "My Auth");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
e.RequestHeaders.SetHeader("X-Authorization", "My Auth");
Run Code Online (Sandbox Code Playgroud)

我找到了适合要求的正确事件,但我不知道如何从 xaml 文件或 .cs 文件调用该事件。以下文档表示此事件将满足要求。

https://learn.microsoft.com/en-us/dotnet/api/microsoft.web.webview2.core.corewebview2.webresourcerequested?view=webview2-dotnet-1.0.864.35

但我不知道如何挂钩该事件以及从哪里进行。

.net c# wpf winforms webview2

3
推荐指数
1
解决办法
2827
查看次数

WebView2 (WPF) - 从本地文件夹加载网站并调用 C# 函数和调用 JS 函数

我正在使用 WebView2 制作 WPF 应用程序。

\n

将有一个安装程序将 WPF 应用程序安装在文件夹中,还将下载网站并将其写入安装目录的子文件夹中。比如这样:

\n
Installation Directory\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80Website\n\xe2\x94\x82   \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80index.css\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80index.html\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80WPF Self Contained EXE\n
Run Code Online (Sandbox Code Playgroud)\n

WebView2 将使用此加载网站(我认为):webView.CoreWebView2.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Website");

\n

这应该加载index.html及其引用的所有文件,例如index.css.

\n

现在我主要关心的是如何从 C# 调用 JavaScript 函数。到目前为止,在谷歌搜索后我只找到了 WebView1 的方法。我找不到任何有关从 JavaScript 调用 C# 方法的信息。

\n

所以三件事:

\n
    \n
  1. webView.CoreWebView2.Navigate(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Website");从本地文件夹加载网站是否正确?
  2. \n
  3. 我如何调用 JavaScript 函数并从 C# 方法将 C# 对象传递给它。
  4. \n
  5. 如何从 JavaScript 脚本调用 C# 函数?
  6. \n
\n

这可能吗?

\n

谢谢。

\n

javascript c# wpf function webview2

3
推荐指数
1
解决办法
1998
查看次数

WebView2Loader.dll 与 WebView2.dll

我工作的公司开发了一个应用程序,该应用程序使用 WebView2 在应用程序中显示 Edge 浏览器。我们使用的 IDE (Delphi) 提供了一个名为“WebView2Loader.dll”的 dll 与 exe 一起分发。

在查看 WebView2 运行时如何运行时,有很多提到“Evergreen”的东西,它似乎是自动更新到最新和最好版本的 WebView2 运行时。 https://learn.microsoft.com/en-us/microsoft-edge/webview2/concepts/distribution#understand-the-webview2-runtime-and-installer-preview

这就是令人困惑的地方。我的问题是这个 Evergreen 与 WebView2Loader.dll 有何关系?我认为它的工作方式是,加载器 dll 只是用来查找已安装的 WebView2 运行时,而 Evergreen 实际上正在下载运行时。我从这句话中得到了这个指示“WebView2Loader.dll 是一个小组件,可以帮助应用程序在设备上定位 WebView2 运行时或 Microsoft Edge 的不稳定通道。” 通过此链接https://learn.microsoft.com/en-us/microsoft-edge/webview2/how-to/static

然后我的后续问题是,客户是否必须手动下载 Evergreen,或者如果他们已经安装了 Edge,那么该运行时是否存在?

delphi microsoft-edge webview2

3
推荐指数
1
解决办法
6295
查看次数