首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

VB怎么判断网页的加载完毕

2012-02-05 
VB如何判断网页的加载完毕?我的意思是,不是通过documentcomplete进行判断,而是在循环里判断是否下载完毕,

VB如何判断网页的加载完毕?
我的意思是,不是通过documentcomplete进行判断,而是在循环里判断是否下载完毕,下载完毕就跳出循环,否则,就等待一段时间后如果还未加载完毕,就重新加载,结构如下:

do
webbrowser1.Navigate "www.21cn.com"'进入某一个网站
call settime(40000)'设置40秒后,如果webbrowser1还没有完全打开网页的话,则重新运行加载上面的页面
if isComplete =true then exit do'获取判断完成的一个变量,完成后,则退出循环
doevents
loop

现在问题就是,当我运行我上述代码(当然,代码没错,不过为了大家清晰一点,我简化之后帖出),系统会不停的运行第一句代码(红色那句),变得假死了,我应该怎么才能判断运行了第一句之后,webbrowser是否加载完毕呢?谢谢

其实我是想用循环做为判断网页加载完毕,而不是用webbrowser1自带的documentelement等事件,希望大家明白.

[解决办法]
do while not WebBrowser1.Busy
DoEvents
loop
[解决办法]

探讨
我的意思是,不是通过documentcomplete进行判断,而是在循环里判断是否下载完毕,下载完毕就跳出循环,否则,就等待一段时间后如果还未加载完毕,就重新加载,结构如下:

do
webbrowser1.Navigate "www.21cn.com"'进入某一个网站
call settime(40000)'设置40秒后,如果webbrowser1还没有完全打开网页的话,则重新运行加载上面的页面
if isComplete =true then exit do'获取判断完成的一个变量,完成后,则退出循环
doevents
loop

[解决办法]
这个按常规的做法是肯定行不通的.特别是有很多框架的网页 .经过多次的测试 .我觉得应该是目前最佳的解决方法了:
弄一个计数器timer1.interval设在100-200ms
弄一个全局变量 Dim comp As Integer
Private Sub Timer1_Timer()
If WebBrowser1.ReadyState = 4 And WebBrowser1.Busy = False Then
comp = comp + 1
Set vdoc = WebBrowser1.Document
End If
If comp = 5 Then
comp = 0
Set vdoc = WebBrowser1.Document'网页加载完成
End If
End Sub

这个肯定能满足楼主的要求 分给我吧 啦啦 .因为我前段刚好也有碰到这个问题 .也是好久才自己解决到.

热点排行