本日之最实用问题:webbrowser中,innerText得到的是空值,本地文件才能取得实际值我用webBrowser写了一个浏览器,部分代码如下:webbrowser.Navigate "H:\test.htm"    '本地文件,webBody不是空值
'webbrowser.navigate "http://www.163.com"  '打开远端文件,webBody是空值Dim webBody as string
webBody=webbrowser.document.body.innerText
if not webbrowser.busy then
msgbox webBody
End if这是为什么?是因为非本地文件无权限吗?

解决方案 »

  1.   

    补充一下:
    类似以下地址innerText无效,其它地址则可以。是不是其html源码中有特别的地方
    http://my.clubhi.com/bbs/661134/
      

  2.   

    webBody=webbrowser.document.body.innerText这一句运行的时候,由于是紧接在 Navigate之后的,因此对于远端文件,可能文件还没有取过来,因此,取到的可能还是 about:blank 的文本,把这句以后的部分放到 DocumentComplement 事件中应该就没问题了。
      

  3.   

    用outerHtml发现,http://my.clubhi.com/bbs/661134
    整个页面内容是frame
    所以innertext无效。怎么解决?
      

  4.   

    川乌
    我给你一个思路吧!!
    首先遍历Document里面的所有对象,查找所有tagname属性="IFrame"的对象,然后取出该对象的Src属性存入数组。遍历完后再一个一个的去连接数组里面存的地址。遍历算法:
    '/+++++++++++++++++++++++++++++++++++++++++++\
    Dim objT As Object
    Dim objDoc As Object
    Dim strarrUrls() As String
    Dim lngIndex As LongSet objDoc=webbrowser.Document
    Redim strarrUrls(objDoc.All.Length) As String
    For Each objT In objDoc.All
        If UCase(objT.TagName)="IFRAME" Then
           strarrUrls(lngIndex)=objT.Src
        End If
    Next
    '\++++++++++++++++++++++++++++++++++++++++++++/
    下面就是用webbrowser控件一个一个去连接strarrUrls数组里面的URL地址,然后取出InnerText了!!!给分!!!!!川乌!!!!
      

  5.   

    记住要等到事件WebBrowser1_DocumentComplete发生以后才能取你所需要的,不然会出错的!
      

  6.   

    感谢,
    我用
    webbrowser 框架
    作关键词在csdn作全文查询,得到如下答案:
    webbrowser.document.frames(0).document.body.innerText测试通过