Reliably waiting for page to load 2

82 Views Asked by At

How completely detect when awesomium browser end rendering the page? I try use this code, but its not correct detect it. In SO i can't find answer.

bool LoadingFinished;

    Wb.LoadingFrameComplete += WbLoadingFrameCompleted;
    ...

void WbLoadingFrameCompleted(object sender, FrameEventArgs e)
{
    if (!e.IsMainFrame)
        return;

    LoadingFinished = true;
}

void LoadUrl(string url)
{
    LoadingFinished = false;

    Wb.Source = new Uri(url);

    while (!LoadingFinished)
    {
        Thread.Sleep(100);
        WebCore.Update(); 
    }
}
2

There are 2 best solutions below

0
ingvar On

Try this code after changing url:

while (!webControl.IsDocumentReady)
{
    Thread.Sleep(100);
}
0
Sjoerd222888 On

On your webView implementing the IWebView interface you can subscribe to the DocumentReady event:

webView.DocumentReady += DocumentReady;

Your event handler

private void DocumentReady(object sender, DocumentReadyEventArgs e){
    LoadingFinished = true;
}

Please mind that the Awesomium project is quite dead at this very momenent (see homepage currently stating only "We're building something new!"). You could also consider using another framework like CefGlue or CefSharp