次の方法で共有


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 プロパティを持つナビゲーション イベントを示しています。

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

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

  1. 最初のナビゲーションの NavigationStarting イベント。
  2. 2 番目のナビゲーションの NavigationStarting イベント。
  3. 最初のナビゲーションの NavigationCompleted イベント。
  4. 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 サンプル アプリ では、ナビゲーション イベントの処理についても説明します。

関連項目