WebBrowser, warten, bis die Seite fertig geladen ist

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Samus Aran.

    WebBrowser, warten, bis die Seite fertig geladen ist

    VB.NET-Quellcode

    1. WB.Navigate("http://beispiel.de")
    2. Do Until WB.ReadyState = WebBrowserReadyState.Complete
    3. Application.DoEvents()
    4. Loop
    5. If Not bool1 Then
    6. WB.Navigate("javascript:blabla")
    7. bool1 = True
    8. MessageBox.Show("Test erfolgreich")
    9. End If


    Das Problem ist, dass die MessageBox angezeigt wird, obwohl der WB noch nichts gemacht hat.
    Wie lässt sich das verhindern?

    Samus Aran schrieb:

    Das Problem ist, dass die MessageBox angezeigt wird, obwohl der WB noch nichts gemacht hat
    Das glaube ich Dir nicht so ganz, zumindest nicht beim Annavigieren auf die Webseite http://beispiel.de:

    VB.NET-Quellcode

    1. WB.Navigate("http://beispiel.de")
    2. While WB.ReadyState <> WebBrowserReadyState.Complete
    3. Application.DoEvents()
    4. End While
    5. MessageBox.Show("Test erfolgreich")

    wartet brav bis die Seite zuende geladen ist. Was Du danach mit dem Annavigieren von Javascript versuchst, versteh ich eh nicht :)

    Bei anderen Seiten gibt es manchmal merkwürdige Effekte durch AJAX (Javascript).
    Durch das Javascript löse ich eine Aktion auf der Seite aus, die ich durch beispiel.de ersetzt habe. :p

    Und es funktioniert einfach nicht, ich hab meinen Code mal auskommentiert und mit deinem ersetzt, deine MessageBox erscheint trotzdem am Anfang.
    Ersetz du mal beispiel.de mit listen.grooveshark.com.

    Samus Aran schrieb:

    Ersetz du mal beispiel.de mit listen.grooveshark.com

    Hab ich gemacht: die Seite baut (wie Ajax) extrem auf Javascript und die eigentliche Webseite ist eine reine Flash Anwendung.

    Ich hab mal 1 Zeile Code eingebaut um zu sehen wie oft das DocumentCompleted Event ausgelöst wird, schau mal selbst:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    3. WB.Navigate("listen.grooveshark.com")
    4. While WB.ReadyState <> WebBrowserReadyState.Complete
    5. Application.DoEvents()
    6. End While
    7. Trace.WriteLine("Test erfolgreich")
    8. End Sub
    9. Private Sub WB_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WB.DocumentCompleted
    10. Trace.WriteLine("Document Completed")
    11. End Sub
    12. End Class
    Ich bezweifle, dass sein WebBrowser speziell um GrooveShark drumrum programmiert wurde.

    @Kangaroo:
    Document Completed
    Document Completed
    Document Completed
    Document Completed
    Document Completed
    Document Completed
    Test erfolgreich
    Document Completed

    :D
    Warum wirft VB da aber nur einmal "Test erfolgreich" aus, ruft aber die MessageBox sofort auf?

    Edit: Mein Code stand bisher im Form_Load-Event. Hat das damit war zu tun?