2009-04-20 12 views
1

Ich arbeite an einem Webcrawler in VB.net und mit dem System.Forms.WebBrowser-Objekt für die Handhabung der Navigation auf Websites, die Javascript oder Form-Posts verwenden, aber ich habe eine Problem. Wenn ich rückwärts (WebBrowser.GoBack()) zu einer Seite navigiere, die mit einem Formularpost geladen wurde, ist die Seite abgelaufen und ich muss eine Aktualisierung durchführen, um die Anforderung erneut zu senden. Wenn ich eine Aktualisierung (WebBrowser.Refresh()) aufruft, erscheint ein Dialogfeld zur Bestätigung. Gibt es eine Möglichkeit, diesen modalen Dialog im Code zu umgehen? Vielen Dank!WebBrowser.Refresh Problem in VB.Net

+0

Ich sollte auch hinzufügen, dass ich versucht habe, die WebBrowserRefreshOptions (Normal, Complete, IfExpired) ohne Glück zu verwenden. –

Antwort

2

Möglicherweise können Sie eine Aktualisierungsoption vom Typ System.Windows.Forms.WebBrowserRefreshOption übergeben.

Es gibt mehrere Möglichkeiten, hier beschrieben:
http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowserrefreshoption.aspx

Es scheint, dass die Optionen der einzige Weg sind Sie programmatisch einen Web-Browser refresh steuern kann.

+0

Ich hätte erwähnen sollen, dass ich es mit den Optionen IfExpired und Complety versucht habe, sowie mit der parameterlosen Aktualisierung, von der ich glaube, dass sie die gleiche wie Normal ist. Ich sehe immer noch Auffrischungsaufforderungen –

1

Ich hatte ein ähnliches Problem mit einem Popup mit einer JavaScript-Warnung angezeigt. Ich konnte es unter Verwendung eines window_error Ereignisses unterdrücken.

Ich habe diese Zeile in der browser_completed Ereignishandler:

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

Hier mein window_error Event-Handler ist:

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

Eine weitere Möglichkeit, darüber nachzudenken, ist um mit this._browser.ScriptErrorsSuppressed liebäugelt. Ich bin mir ziemlich sicher, dass Sie keinen Skriptfehler bekommen, aber es ist einen Versuch wert.

0

Ich habe eine Abhilfe/Hack zur Behebung dieses Problems in hier: http://www.experts-exchange.com/Programming/Languages/.NET/Q_25160302.html

Grundsätzlich Sie es wie folgt tun:

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

Die SendKeys.Send("{Enter}"); Linie eine Enter-Taste, um aktive Fenster sendet, das ist der modale Dialog, den wir loswerden wollen.