You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过VB.Net的WebView2控件操作新打开的窗口?

解决WebView2访问新窗口触发PDF下载的方案

核心思路

WebView2的CoreWebView2.NewWindowRequested事件可捕获window.open创建的新窗口,通过该事件获取新窗口的WebView2实例,即可在新窗口中执行JS操作触发PDF下载。

具体实现步骤

  1. 注册NewWindowRequested事件
    在WebView2初始化完成后(比如CoreWebView2InitializationCompleted事件回调中),注册新窗口请求事件:
AddHandler wv.CoreWebView2.NewWindowRequested, AddressOf CoreWebView2_NewWindowRequested
  1. 捕获新窗口实例
    实现事件处理方法,取消默认弹窗行为,获取新窗口的CoreWebView2对象,并绑定导航完成事件:
Private Sub CoreWebView2_NewWindowRequested(sender As Object, e As CoreWebView2NewWindowRequestedEventArgs)
    ' 取消系统默认的新窗口打开逻辑
    e.Handled = True
    ' 创建新的WebView2实例关联到请求的新窗口
    Dim newWebView As New WebView2()
    e.NewWindow = newWebView.CoreWebView2
    ' 监听新窗口的导航完成事件,用于后续操作
    AddHandler newWebView.CoreWebView2.NavigationCompleted, AddressOf NewWindow_NavigationCompleted
End Sub
  1. 新窗口加载完成后触发下载
    在新窗口页面加载完毕后,执行JavaScript点击PDF下载按钮:
Private Async Sub NewWindow_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs)
    Dim newCoreWebView = DirectCast(sender, CoreWebView2)
    If e.IsSuccess Then
        ' 替换为新窗口中PDF下载按钮的实际选择器(比如ID或CSS选择器)
        Await newCoreWebView.ExecuteScriptAsync("document.querySelector('#pdfDownloadBtn').click();")
    End If
End Sub
  1. 自定义下载行为(可选)
    若需指定下载路径或监听进度,注册DownloadStarting事件:
AddHandler wv.CoreWebView2.DownloadStarting, AddressOf CoreWebView2_DownloadStarting

实现事件处理逻辑:

Private Sub CoreWebView2_DownloadStarting(sender As Object, e As CoreWebView2DownloadStartingEventArgs)
    ' 设置自定义保存路径
    e.ResultFilePath = "C:\YourDownloadPath\magazine.pdf"
    ' 监听下载进度变化
    AddHandler e.DownloadOperation.BytesReceivedChanged, AddressOf DownloadProgress_Changed
End Sub

Private Sub DownloadProgress_Changed(sender As Object, e As Object)
    Dim downloadOp = DirectCast(sender, CoreWebView2DownloadOperation)
    ' 输出进度示例,可替换为UI更新逻辑
    Console.WriteLine($"下载进度: {downloadOp.BytesReceived}/{downloadOp.TotalBytesToReceive}")
End Sub

注意事项

  • 需确认新窗口中PDF按钮的正确选择器,可通过浏览器开发者工具查看元素的ID或CSS选择器。
  • 所有事件注册需在WebView2的CoreWebView2初始化完成后执行,避免空引用异常。
  • 确保新窗口继承原WebView2的会话状态(如Cookie、登录信息),否则可能无法访问需要权限的PDF资源。

内容的提问来源于stack exchange,提问作者schlebe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 11:01:17