注册 登录
编程论坛 VB6论坛

关于在Webbroswer中多框架页面的操作问题

狂奔小强 发布于 2013-06-15 20:17, 519 次点击
程序启动后,会进入一个多框架网页,我想让程序判断所有框架中的内容是否加载完毕,加载完毕后再进行下面的操作该怎么办?BUSY对多框架无效。还没加载完就进行下面的操作了。

另外多框架中的元素该怎么操作?

求大神指点,谢谢!
3 回复
#2
风吹过b2013-06-16 10:20
webborswer 在加载多框架网页时,每加载完一个 框架 ,就会触发一个页面载入完成的 事件。
当整个框架加载完成后,还会触发这个事件。

在这个事件里,会传入 刚触发 这个事件的 框架对象和框架URL 。判断这个 URL 是不是 目标网页来 判断是不是整个网页载入完成。
如果在 某个框架里的网页操作,判断是不是这个 框架 的URL ,然后这个 框架对象 进行操作就可以了,不必 通过 WEBBORSER 再找框架名 再去操作。
#3
狂奔小强2013-06-16 18:23
回复 2楼 风吹过b
程序代码:
Private Function getFrames(ByVal WB As WebBrowser) As Object
    Dim pContainer As Dim pEnumerator As olelib.IEnumUnknown
    Dim pUnk As olelib.IUnknown
    Dim pBrowser As SHDocVwCtl.WebBrowser_V1
    Set pContainer = WB.object.Document
    If pContainer.EnumObjects(OLECONTF_EMBEDDINGS, pEnumerator) = 0 Then
       Set pContainer = Nothing
       Do While pEnumerator.Next(1, pUnk) = 0
          On Error Resume Next
          Set pBrowser = pUnk
          If Err.Number = 0 Then
             Print "Frame: " & pBrowser.LocationURL
             If pBrowser.LocationURL = "http://XXX.XXX.XXX/ssp/eva/self.jsp?right_no=07010003" Then
                Set getFrames = pBrowser
                Exit Function
            End If
          End If
       Loop
       Set pEnumerator = Nothing
    End If
End Function

Private Sub webbrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  Debug.Print URL
  If URL = "http://XXX.XXX.XXX/ssp/eva/self.jsp?right_no=07010003" Then
    getFrames(WebBrowser1).Document.All("self_eva_score_0").Value = "1"     
    getFrames(WebBrowser1).Document.getElementById("savebutton").Click
  End If
End Sub
非常感谢!!
在上面这段代码里面,我尝试对一个框架内的元素进行操作,可是每当执行到
getFrames(WebBrowser1).Document.All("self_eva_score_0").Value = "1"
就出现错误91,但页面已经打开了呀,不应该会是因为未载入完全而引起的吧。
#4
风吹过b2013-06-17 08:16
你直接对 pDisp  操作 试试。
1