共用方式為


WebView2 應用程式的導覽事件

當你的 WebView2 應用程式使用者前往不同的網頁、URL 或檔案路徑時,這就是 一個導覽。 每個導航都會觸發一連串與導航相關的事件。 你的 WebView2 應用程式原生部分會監聽這些導航事件並處理它們。

當 WebView2 實例中顯示的內容發生特定的非同步動作時,導航事件就會執行。 例如,當 WebView2 使用者瀏覽到新網站時,原生內容會透過監聽事件來監聽 NavigationStarting 變更。 當導航動作完成後,就會 NavigationCompleted 執行。

支援平台:Win32、Windows Forms、WinUI、WPF。

Standard 事件序列

以下是導航每個步驟中通常會觸發的事件序列:

WebView2 導航活動

順序 事件 描述 API 參考概述
1 NavigationStarting WebView2 開始導航,導航結果會產生網路請求。 主辦方可在活動期間拒絕此請求。 封鎖不受歡迎的導航
2 SourceChanged WebView2 的來源會改成新的網址。 事件可能源自未引起網路請求的導航動作,例如片段 導航。 航行歷史
3 ContentLoading WebView2 開始載入新頁面的內容。 導航活動
4 HistoryChanged 導覽會更新 WebView2 的歷史紀錄。 航行歷史
5 BasicAuthenticationRequested 當 WebView 遇到 Basic HTTP 認證請求時會被觸發。 請參閱 WebView2 應用程式的基本認證 驗證
6 DOMContentLoaded WebView2 已經完成解析 DOM 內容,但還沒載入頁面上的所有圖片、腳本和其他內容。 導航活動
7 NavigationCompleted WebView2 完成新頁面的內容載入。 導航活動

上圖顯示了在該eventArgs物件上具有相同NavigationId性質的導航事件。

利用 NavigationId 每個導航事件 eventArgs 物件的屬性,追蹤每個新文件的導航事件。 每次導航都包含一連串的導航事件。 每當成功導覽到新文件時,該 NavigationId 數值就會改變。

具有不同導航 ID 的導航事件可能會重疊。 例如,當你啟動導航事件時,必須等待相關 NavigationStarting 事件。 NavigationStarting事件由物件上的NavigationStartingEventArgs屬性來識別NavigationId。 接著你再開始另一個導航,你會看到以下序列:

  1. NavigationStarting這是首次航行的事件。
  2. 第二次航行事件 NavigationStarting
  3. NavigationCompleted這是首次航行的事件。
  4. 所有其他適合第二次導航的導航事件。

在錯誤情況下,是否會發生 ContentLoading 事件,取決於導覽是否繼續到錯誤頁面。

如果發生 HTTP 重定向,會連續出現多個 NavigationStarting 事件,後續事件參數設定了 IsRedirect 該屬性;但導航 ID 保持不變。

同文件的導航事件,例如在同一文件中導航到某個片段,不會觸發 NavigationStarting 事件,也不會改變導航 ID。

要監控或取消 WebView2 實例中框架內的導航事件,請使用等效的框架相關 API 與事件。 請參閱 WebView2 應用程式中使用框架

例如,示範如何處理導航事件的程式碼,請參見:

  • 了解 WinUI 2 (UWP) 應用程式中的導航事件——文章中沒有範例程式碼;請參閱其他框架的文章。
  • 步驟 8 - 在WinUI 3 (Windows App SDK) 應用程式中,用 WebView2 開始處理導航事件。
  • 步驟 7 -WPF 應用程式中開始使用 WebView2 的導航事件。
  • 步驟 8 -WinForms 應用程式中開始使用 WebView2 的導航事件。
  • 步驟 13 -Win32 應用程式中開始使用 WebView2 的導航事件。

WebView2 範例應用程式也示範如何處理導航事件。

另請參閱