webbrowser的 DocumentComplete 两次的问题
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
msgbox("ss")
End Sub
我随便打开一个网页,为什么总是弹出两次ss的对话框呢
=========================================================================
两次算少的了,因为浏览的页面可能有框架,每个单独的框架都可能会触发DocumentComplete事件。可以通过以下方式来处理:
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) If (pDisp Is WebBrowser1.Object) Then MsgBox "网页下载完毕!" End Sub |
重要说明:在上边的代码中,是判断pDisp是否为webbrowser控件的object.可以准确判断多帧网页是否载入完整.但却不能使用第二个参数url是否等于webbrowser控件的当前url来判断,即:
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant) If WebBrowser1.LocationURL = StrURL Then Call getWebValue Command1_Click End If End Sub 当网页完整加载时,WebBrowser1.LocationURL = StrURL 是成立的,但确不能反过来使用WebBrowser1.LocationURL = StrURL 来判断网页是否完全加载.这是因为:pDisp判断是对象判断,程序后自动等待对象装载完整后才开始判断,也就说,这个对象判断隐含着一个等待对象完整载入的过程.而url判断则是一个字符串判断,不包含等待对象装载完整的过程,cpu会立即返回判断结果.所以使用后者来判断的直接现象就是网页并没有载入完整.
|