分享

webbrowser的 DocumentComplete 两次的问题

 doc360sir 2011-10-07
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会立即返回判断结果.所以使用后者来判断的直接现象就是网页并没有载入完整.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多