Office中国论坛/Access中国论坛

标题: WebBrowser多次跳转页面的问题 [打印本页]

作者: 这是我的小号    时间: 2014-11-13 14:49
标题: WebBrowser多次跳转页面的问题
本帖最后由 这是我的小号 于 2014-11-13 14:54 编辑

估计是页面载入时需要一些时间,或者跟IE缓存有一定关系。每次跳转到下一个页面时,如果不加入Msgbox则永远都无法显示正确的值,但每次都弹出这个警告栏极不方便,大家看看有没有更好的解决办法?
顺便问一句,可以点名吗?^_^ 想点下todaynew来看看。
  1. Option Compare Database
  2. Option Explicit
  3. '这一句是延时执行,但是没用
  4. Private Declare Sub Sleep Lib "Kernel32" (ByVal dwMilliseconds As Long)

  5. Private Sub Command1_Click()

  6. Dim rst As New ADODB.Recordset
  7. Dim i As Long
  8. Dim k As String
  9. Dim s As Double
  10. rst.Open "tblID", CurrentProject.Connection, adOpenKeyset, adLockOptimistic
  11. For i = 1 To rst.RecordCount
  12.    
  13.     s = GetData(rst(1))
  14.     rst(2) = s
  15.     rst.update
  16.     MsgBox s '如果加上这句写入的值就是正确的,如果不加入,写入的值永远都是第一个。
  17.     rst.MoveNext
  18.     'Sleep 1000
  19. Next i
  20. rst.Close

  21. End Sub

  22. Private Sub Form_Load()
  23. Dim wb As WebBrowser
  24. Set wb = Me.WebBrowser0.Object
  25.     wb.Navigate "http://detail.tmall.com/item.htm?_u=n1sscq85e5e0&id=40336681573#J_Reviews"

  26. t = Timer
  27. End Sub

  28. Function GetData(strID As String)
  29. Dim wb As WebBrowser
  30. Dim doc As HTMLDocument
  31. Dim a_tags As IHTMLElementCollection
  32. Dim a_tag As IHTMLElement
  33. Dim str As String
  34. Set wb = Me.WebBrowser0.Object

  35.     wb.Navigate "http://detail.tmall.com/item.htm?_u=n1sscq85e5e0&id=" & strID & "#J_Reviews"
  36.     Set doc = wb.Document
  37.     Set a_tags = doc.all.tags("div")
  38.         For Each a_tag In a_tags
  39.             If a_tag.className = "rate-score" Then
  40.                 str = Mid(a_tag.innerText, InStr(1, a_tag.innerText, "符") + 1)
  41.             End If
  42.         Next
  43. GetData = str

  44. End Function
复制代码
[attach]55011[/attach]

上次的帖子如下:
http://www.office-cn.net/thread-118973-1-1.html

作者: roych    时间: 2014-11-13 15:59
  1. Function GetData(strID As String)
  2. Dim wb As WebBrowser
  3. Dim doc As HTMLDocument
  4. Dim a_tags As IHTMLElementCollection
  5. Dim a_tag As IHTMLElement
  6. Dim str As String
  7. Set wb = Me.WebBrowser0.Object
  8. '加上这几句试试?
  9. '***************
  10.     Do Until wb.ReadyState = READYSTATE_COMPLETE
  11.         DoEvents
  12.     Loop
  13. '*******************
  14.     wb.Navigate "http://detail.tmall.com/item.htm?_u=n1sscq85e5e0&id=" & strID & "#J_Reviews"

  15.     Set doc = wb.Document
  16.     Set a_tags = doc.all.tags("div")
  17.         For Each a_tag In a_tags
  18.             If a_tag.className = "rate-score" Then
  19.                 str = Mid(a_tag.innerText, InStr(1, a_tag.innerText, "符") + 1)
  20.             End If
  21.         Next
  22. GetData = str

  23. End Function
复制代码

作者: leonshi    时间: 2014-11-13 16:53
roych 发表于 2014-11-13 15:59

谢谢
作者: leonshi    时间: 2014-11-14 10:46
roych 发表于 2014-11-13 15:59

你那个处理方法有效,的确解决jquery数据加载慢的问题
作者: roych    时间: 2014-11-14 11:48
leonshi 发表于 2014-11-14 10:46
你那个处理方法有效,的确解决jquery数据加载慢的问题

由于网页是服务端的,jQuery不好处理吧?个人觉得,用IFrame加载也不方便。这些代码都属于DOM里面的。。。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3