我是Awesomium webcontrol的新手。当我为我的webbrowser控件添加事件DocumentCompleted时,我想为我的Awesomium webcontrol添加,我该怎么做?
AddHandler WebBrowser1.DocumentCompleted, New _
WebBrowserDocumentCompletedEventHandler(AddressOf webBrowser1_DocumentCompleted)
答案 0 :(得分: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,如果在后台仍然有任何类型的加载,它将阻止子逻辑被执行。通过将这些检查添加到事件中,它到目前为止已经正确且一致地执行了。