WebView2 アプリのナビゲーション イベント
WebView2 アプリのユーザーが別の Web ページ、URL、またはファイル パスに移動すると、これは ナビゲーションです。 各ナビゲーションでは、ナビゲーション関連のイベントのシーケンスが発生します。 WebView2 アプリのネイティブ部分は、これらのナビゲーション イベントをリッスンして処理します。
ナビゲーション イベントは、WebView2 インスタンスに表示されるコンテンツに対して特定の非同期アクションが発生したときに実行されます。 たとえば、WebView2 ユーザーが新しい Web サイトに移動すると、ネイティブ コンテンツは NavigationStarting
イベントをリッスンすることで変更をリッスンします。 ナビゲーション アクションが完了すると、 NavigationCompleted
が実行されます。
サポートされているプラットフォーム: Win32、Windows フォーム、WinUI、WPF。
イベントの標準シーケンス
ナビゲーションの各ステップで発生するイベントの通常のシーケンスを次に示します。
Sequence | イベント | 説明 | API リファレンスの概要 |
---|---|---|---|
1 | NavigationStarting |
WebView2 が移動を開始し、ナビゲーションによってネットワーク要求が生成されます。 ホストは、イベント中に要求を許可しない場合があります。 | 不要なナビゲーションをブロックする |
2 | SourceChanged |
WebView2 のソースが新しい URL に変更されます。 イベントは、フラグメント、ナビゲーションなど、ネットワーク要求を引き起こさないナビゲーション アクション 発生する可能性があります。 | ナビゲーション履歴 |
3 | ContentLoading |
WebView2 は、新しいページのコンテンツの読み込みを開始します。 | ナビゲーション イベント |
4 | HistoryChanged |
ナビゲーションにより、WebView2 の履歴が更新されます。 | ナビゲーション履歴 |
5 | BasicAuthenticationRequested |
WebView が基本的な HTTP 認証要求を検出したときに発生します。 「WebView2 アプリの基本認証」を参照してください。 | 認証 |
6 | DOMContentLoaded |
WebView2 は DOM コンテンツの解析を終了しますが、ページ上のすべてのイメージ、スクリプト、およびその他のコンテンツの読み込みが完了していません。 | ナビゲーション イベント |
7 | NavigationCompleted |
WebView2 では、新しいページでのコンテンツの読み込みが完了します。 | ナビゲーション イベント |
ナビゲーション ID
上の図は、それぞれのeventArgs
オブジェクトで同じNavigationId
プロパティを持つナビゲーション イベントを示しています。
各ナビゲーション イベントの eventArgs
オブジェクトの NavigationId
プロパティを使用して、新しいドキュメントごとにナビゲーション イベントを追跡します。 各ナビゲーションには、一連のナビゲーション イベントが含まれます。
NavigationId
値は、新しいドキュメントへのナビゲーションが正常に完了するたびに変更されます。
異なるナビゲーション ID を持つナビゲーション イベントが重複する可能性があります。 たとえば、ナビゲーション イベントを開始するときは、関連する NavigationStarting
イベントを待機する必要があります。
NavigationStarting
イベントは、NavigationStartingEventArgs
オブジェクトの NavigationId
プロパティによって識別されます。 その後、別のナビゲーションを開始すると、次のシーケンスが表示されます。
- 最初のナビゲーションの
NavigationStarting
イベント。 - 2 番目のナビゲーションの
NavigationStarting
イベント。 - 最初のナビゲーションの
NavigationCompleted
イベント。 - 2 番目のナビゲーションに適切なナビゲーション イベントの残りすべて。
エラーが発生した場合、ナビゲーションがエラー ページに続くかどうかに応じて、 ContentLoading
イベントが発生する場合とそうでない場合があります。
HTTP リダイレクトが発生した場合、行には複数の NavigationStarting
イベントがあり、後のイベント引数には IsRedirect
プロパティが設定されます。ただし、ナビゲーション ID は変わりません。
同じドキュメント内のフラグメントへの移動などの同じドキュメント ナビゲーション イベントでは、 NavigationStarting
イベントが発生せず、ナビゲーション ID が変更されることはありません。
フレーム内のナビゲーション
WebView2 インスタンス内のフレーム内のナビゲーション イベントを監視または取り消すには、同等のフレーム関連の API とイベントを使用します。 「WebView2 アプリでのフレームの使用」を参照してください。
ナビゲーションのコード例
ナビゲーション イベントを処理する方法を示すコード例については、次を参照してください。
- 「WinUI 2 (UWP) アプリでの WebView2 の概要 - 記事のコード例なし」のナビゲーション イベントについて説明します。他のフレームワークの記事を参照してください。
- 手順 8 -WinUI 3 (Windows アプリ SDK) アプリでの WebView2 の概要に関するページのナビゲーション イベントを処理します。
- 手順 7 -WPF アプリでの WebView2 の概要に関するページのナビゲーション イベント。
- 手順 8 -WinForms アプリでの WebView2 の概要に関するページのナビゲーション イベント。
- 手順 13 - Win32アプリでの WebView2 の概要に関するページのナビゲーション イベント。
WebView2 サンプル アプリ では、ナビゲーション イベントの処理についても説明します。
関連項目
- WebView2 の機能と API の概要でページに移動し、読み込まれたコンテンツを管理する
- WebView2 アプリの基本認証
- WebView2 の概要
- WebView2Samples リポジトリ - WebView2 機能の包括的な例。
- WebView2 API リファレンス