2016-10-03 1 views
0

Я новичок в веб-управлении Awesomium. Поскольку я добавляю событие DocumentCompleted для моего элемента управления webbrowser так же, как я хочу добавить для своего веб-контроля Awesomium, как я могу это сделать?Добавление DocumentCompletedEvent в веб-управление Awesomium

AddHandler WebBrowser1.DocumentCompleted, New _ 
    WebBrowserDocumentCompletedEventHandler(AddressOf webBrowser1_DocumentCompleted) 

ответ

0

К сожалению, это событие не так прямолинейно, как веб-контроль сети .net, но его эффект еще может быть достигнут. Вот как я обычно это делаю, это выглядит немного чрезмерно для такого основного события, но я объясню, почему все это необходимо. Вот код:

Private Sub WebControl1_LoadingFrameComplete(sender As Object, e As Awesomium.Core.FrameEventArgs) Handles WebControl1.LoadingFrameComplete 
    If e.IsMainFrame AndAlso Not WebControl1.IsNavigating AndAlso Not WebControl1.IsLoading Then 
     'do stuff 
    End If 
End Sub 

OnLoadingFrameComplete ближайший Awesomium должен DocumentCompleted, но это само по себе не указывает на все ресурсы страницы завершении загрузки. Он может срабатывать несколько раз, когда отдельные кадры/подкадры завершаются загрузкой, поэтому мы проверяем e.IsMainFrame, потому что это обычно последний кадр для загрузки ... вот как разработчики Awesomium рекомендуют обнаруживать, что страница завершена. Тем не менее, у меня даже было это с ошибкой несколько раз в прошлом, поэтому я добавил Not IsLoading и Not IsNavigating, что предотвратит выполнение логики sub, если в фоновом режиме все еще происходит какая-то загрузка , С этими двумя проверками, добавленными к событию, он выполнил корректно и последовательно для меня до сих пор.

Смежные вопросы