WebView2簡單試用(三)—— 新窗口打開頁面的處理


當我們進行頁面跳轉的時候,有的時候回使用新窗口打開,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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM