TianFang

当我们进行页面跳转的时候,有的时候回使用新窗口打开,WebView2会弹出一个有默认样式的新窗口,而这往往不是我们所想要的效果。

         

要重载这一行为,实现在自定义的窗口中承载新的web页面,需要我们处理CoreWebView2.NewWindowRequested事件

    await webView.EnsureCoreWebView2Async();
    webView.CoreWebView2.NewWindowRequested += OnNewWindowRequested;

事件处理方式如下:

    var deferral = e.GetDeferral();
    e.NewWindow = webView.CoreWebView2;
    deferral.Complete();

简单的来说有如下三步:

  1. 获取Deferral对象
  2. 将EventArgs.NewWindow的引用赋为新的CoreWebView控件
  3. 调用Deferral.Coimplete函数

我这里是将新窗口在当前页面中打开,实现类似多tab页的浏览器。则需要新建webview2控件,此时需要注意等待初始化完成,并且新的webview2控件同样要增加NewWindowRequested的处理:

    var deferral = e.GetDeferral();     //需要同步获取,不要异步等待后再获取
    await webView.EnsureCoreWebView2Async();
    e.NewWindow = webView.CoreWebView2;
    deferral.Complete();

参考文档:

Create tabs using WebView2 - Edge

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-30
  • 2021-12-19
  • 2022-02-11
  • 2022-12-23
  • 2022-02-02
  • 2022-01-23
猜你喜欢
  • 2022-02-08
  • 2021-11-09
  • 2022-12-23
  • 2021-11-17
  • 2021-06-23
  • 2021-12-06
  • 2022-02-18
相关资源
相似解决方案