1

私は VB.net で webcrawler に取り組んでおり、System.Forms.WebBrowser オブジェクトを使用して、javascript またはフォーム投稿を使用するサイトでのナビゲーションを処理していますが、問題があります。フォーム ポストが読み込まれたページに戻る (WebBrowser.GoBack()) と、ページの有効期限が切れており、要求を再送信するために更新を行う必要があります。更新 (WebBrowser.Refresh()) を呼び出すと、確認のダイアログ ボックスが表示されます。このモーダル ダイアログをコードで回避する方法はありますか? ありがとう!

4

3 に答える 3

2

System.Windows.Forms.WebBrowserRefreshOption 型の更新オプションを渡すことができる場合があります。

ここで説明されているいくつかのオプションがあります:
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowserrefreshoption.aspx

オプションは、Web ブラウザーの更新をプログラムで制御できる唯一の方法のようです。

于 2009-04-20T17:42:35.437 に答える
1

JavaScript の警告とともにポップアップが表示されるという同様の問題がありました。イベントを使用してなんとか抑制できましたwindow_error

browser_completed次の行をイベント ハンドラーに追加しました。

((WebBrowser)sender).Document.Window.Error +=
    new HtmlElementErrorEventHandler(Window_Error);

ここに私のwindow_errorイベントハンドラがあります:

void Window_Error(object sender, HtmlElementErrorEventArgs e)
{
    e.Handled = true;
}

考えるべきもう 1 つのオプションは、 をいじることthis._browser.ScriptErrorsSuppressedです。スクリプト エラーが発生していないことは確かですが、試してみる価値はあります。

于 2009-07-20T13:42:44.783 に答える
0

ここでこの問題を解決するための回避策/ハックを見つけました: http://www.experts-exchange.com/Programming/Languages/.NET/Q_25160302.html

基本的には次のようにします。

Browser.Refresh(WebBrowserRefreshOption.Completely);
SendKeys.Send("{Enter}");

このSendKeys.Send("{Enter}");行は、削除したいモーダル ダイアログであるアクティブ ウィンドウに Enter キーを送信します。

于 2011-10-20T12:52:39.427 に答える