私のWinFormsアプリケーション内にC#WebBrowser
コントロールを持ち、Navigating
イベントを認識していたので、次のことに対する素晴らしくエレガントな解決策を思いつきませんでした:
- ユーザーが積極的に別の URL に移動した場合は、それを許可したいと考えています。
- ページが「勝手に」別の URL にリダイレクトする場合は、それをキャンセルしたいと考えています。
ケース1については、私が考えることができるいくつかのケースがあります:
a
ユーザーがタグをクリックすると、href
属性が評価されて別の URL が読み込まれます。- ユーザーは、別の URL をロードするため
onclick
に使用する関数を呼び出す JavaScript イベント ハンドラーで要素をクリックします。window.location
ケース2の場合、次のことが想像できます。
- 読み込まれたページには
iframe
、IFrame 内に URL を読み込むタグが含まれています。これにより、Navigating
イベントが発生します。 - ページの読み込み時に開始される JavaScript タイマーがいくつかあり、それが起動すると、
window.location
別の URL を読み込むために使用されます。 - 読み込まれたページには、数秒後に別の URL を読み込むための
meta refresh
ヘッダー タグが含まれています。
だから私の質問は:
Navigating
リダイレクトがユーザーによって明示的にトリガーされるか、ページによって暗黙的にトリガーされるかを、イベント (またはその他のメカニズム)内で検出する方法は?
もう少し情報
- は
WebBrowser
、Windows ベースの CMS バックエンド アプリケーション内で使用されています。 - したがって、WebBrowser コントロール内にロードされたコンテンツを完全に制御できます。
- 必要に応じて、ブラウザに送信する前に完全な HTML 文字列を操作できることを意味します。
- より適切であれば、読み込まれる HTML に挿入できる JavaScript 専用のソリューションも入手したいと考えています。
(これはこのSO投稿の複製ではないと私は信じていることに注意してください)