WebView2 アプリのナビゲーション イベント

WebView2 アプリのユーザーが別の Web ページ、URL、またはファイル パスに移動すると、これは ナビゲーションです。 各ナビゲーションでは、ナビゲーション関連のイベントのシーケンスが発生します。 WebView2 アプリのネイティブ部分は、これらのナビゲーション イベントをリッスンして処理します。

ナビゲーション イベントは、WebView2 インスタンスに表示されるコンテンツに対して特定の非同期アクションが発生したときに実行されます。 たとえば、WebView2 ユーザーが新しい Web サイトに移動すると、ネイティブ コンテンツはイベントをリッスンすることで変更を NavigationStarting リッスンします。 ナビゲーション アクションが完了したら、 NavigationCompleted を実行します。

サポートされているプラットフォーム: Win32、Windows フォーム、WinUI、WPF。

イベントの標準シーケンス

ナビゲーションの各ステップで発生するイベントの通常のシーケンスを次に示します。

WebView2 ナビゲーション イベント

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 では、新しいページでのコンテンツの読み込みが完了します。 ナビゲーション イベント

上の図は、それぞれのeventArgsオブジェクトで同じNavigationIdプロパティを持つナビゲーション イベントを示しています。

各ナビゲーション イベントのオブジェクトの プロパティを使用して、 NavigationId 新しい各ドキュメントへのナビゲーション イベントを eventArgs 追跡します。 各ナビゲーションには、一連のナビゲーション イベントが含まれます。 値は NavigationId 、新しいドキュメントへのナビゲーションが正常に完了するたびに変更されます。

異なるナビゲーション ID を持つナビゲーション イベントが重複する可能性があります。 たとえば、ナビゲーション イベントを開始するときは、関連 NavigationStarting するイベントを待機する必要があります。 イベントは NavigationStarting 、 オブジェクトの NavigationIdNavigationStartingEventArgs プロパティによって識別されます。 その後、別のナビゲーションを開始すると、次のシーケンスが表示されます。

  1. 最初の NavigationStarting ナビゲーションのイベント。
  2. NavigationStarting 2 番目のナビゲーションのイベント。
  3. 最初の NavigationCompleted ナビゲーションのイベント。
  4. 2 番目のナビゲーションに適切なナビゲーション イベントの残りすべて。

エラーの場合は、ナビゲーションがエラー ページに続くかどうかに応じて、イベントが発生する場合とない ContentLoading 場合があります。

HTTP リダイレクトが発生した場合、行には複数 NavigationStarting のイベントがあり、後のイベント引数には IsRedirect プロパティが設定されます。ただし、ナビゲーション ID は変わりません。

同じドキュメント内のフラグメントへの移動などの同じドキュメント ナビゲーション イベントでは、イベントが発生せず NavigationStarting 、ナビゲーション ID が変更されることはありません。

WebView2 インスタンス内のフレーム内のナビゲーション イベントを監視または取り消すには、同等のフレーム関連の API とイベントを使用します。 「WebView2 アプリでのフレームの使用」を参照してください。

ナビゲーション イベントを処理する方法を示すコード例については、次を参照してください。

  • 「WinUI 2 (UWP) アプリでの WebView2 の概要 - 記事のコード例なし」のナビゲーション イベントについて説明します。他のフレームワークの記事を参照してください。
  • 手順 6 -WinUI 3 (Windows アプリ SDK) アプリの WebView2 の概要に関するページのナビゲーション イベント。
  • 手順 8 -WPF アプリでの WebView2 の概要に関するページのナビゲーション イベント。
  • 手順 8 -WinForms アプリでの WebView2 の概要に関するページのナビゲーション イベント。
  • 手順 14 -Win32 アプリでの WebView2 の概要に関するページのナビゲーション イベント。

WebView2 サンプル アプリ では、ナビゲーション イベントの処理についても説明します。

関連項目