vb6webbrowser-controlonreadystatechange

VB6: get onreadystate value from browser control


I'm trying to get the onreadystate value from the browser control do detect when the page has finished loading. Unfortunately, the event's .returnValue gets returned empty.

Here's my code:

Dim WithEvents m_doc As HTMLDocument

Private Sub Form_Load()
    Set m_doc = WebBrowser1.Document
End Sub

Private Sub m_doc_onreadystatechange()
Dim m_event As IHTMLEventObj
    Set m_event = m_doc.parentWindow.event
    m_value = "'" & m_event.returnValue & "'"
    MsgBox "onreadystatechange: " & m_value
End Sub

Any ideas on what's wrong?


Solution

  • If you want to use the HTMLDocument's events try

    m_doc.createDocumentFromUrl "http://www.microsoft.com", ""
    

    Otherwise you can use the WebBrowser control's event to detect when a document is completely loaded or call the Navigate or Navigate2 method and immediately loop while polling the WebBrowser.ReadyState

    WebBrowse1.Navigate2 "http://www.microsoft.com"
    Do While WebBrowser1.ReadyState <> READYSTATE_COMPLETE
        DoEvents
    Loop
    

    Of course don't forget to add an error handler.