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

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

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

ナビゲーション イベントの例については、「 WebView2 の使用を開始する」を参照してください。

ナビゲーション イベントの通常のシーケンスは次のとおりです。

  1. NavigationStarting
  2. SourceChanged
  3. ContentLoading
  4. HistoryChanged
  5. BasicAuthenticationRequested
  6. DOMContentLoaded
  7. NavigationCompleted

次のイベントでは、各ナビゲーション アクション中の WebView2 の状態について説明します。

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

シーケンス [Event Name] 詳細
1 NavigationStarting WebView2 が移動を開始し、ナビゲーションによってネットワーク要求が生成されます。 ホストは、イベント中に要求を許可しない場合があります。
2 SourceChanged WebView2 のソースが新しい URL に変更されます。 このイベントは、フラグメント ナビゲーションなどのネットワーク要求を引き起こさないナビゲーション アクションの結果として発生する可能性があります。
3 ContentLoading WebView2 は、新しいページのコンテンツの読み込みを開始します。
4 HistoryChanged ナビゲーションにより、WebView2 の履歴が更新されます。
5 DOMContentLoaded WebView2 は DOM コンテンツの解析を終了しますが、ページ上のすべてのイメージ、スクリプト、およびその他のコンテンツの読み込みが完了していません。
6 NavigationCompleted WebView2 は、新しいページでのコンテンツの読み込みを完了します。

上の図は、それぞれのイベント引数に同じ NavigationId プロパティを持つナビゲーション イベントを示しています。

ナビゲーション ID (イベントで提供される) を使用して、ナビゲーション イベントを新しい各ドキュメントに NavigationId 追跡します。 WebView2 のイベントは NavigationId 、新しいドキュメントへの正常なナビゲーションが完了するたびに変更されます。

イベントのインスタンスが異なるナビゲーション イベントが NavigationId 重なる場合があります。 たとえば、ナビゲーション イベントを開始するときは、関連する NavigationStarting イベントを待機する必要があります。 その後、別のナビゲーションを開始すると、次のシーケンスが表示されます。

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

エラーが発生した場合は、ナビゲーションがエラー ページに続くかどうかによって、イベントが発生する可能性 ContentLoading があります。

HTTP リダイレクトが発生した場合、1 行に複数 NavigationStarting のイベントがあり、後のイベント引数に IsRedirect プロパティが設定されていますが、 NavigationId イベントは同じままです。

同じドキュメント内のフラグメントへの移動などの同じドキュメント ナビゲーション イベントでは、イベントは発生 NavigationStarting せず、イベントを NavigationId インクリメントしません。

WebView2 インスタンスのサブフレーム内のナビゲーション イベントを監視または取り消すには、そのイベントとFrameNavigationCompletedイベントをFrameNavigationStarting使用します。 これらのイベントは、同等のフレーム以外の対応するイベントのように動作します。

関連項目