如何判断WebBrowser浏览器网页加载完成
1个回答
展开全部
如何判断WebBrowser浏览器网页加载完成
在工作中遇到了这样的问题,那就是要判断WebBrowser浏览器网页是否加载完成,通过搜索发现网友们解决这一问题的几种方法,但都不能解决实际问题,现在我们就来看看网友们是如何解决这一问题的。
一、通过DocumentCompleted
事件
每一次网页完成之后都后发送DocumentCompleted
事件,但是拥有多个frame时,浏览器就会发送多个DocumentCompleted事件,所以到最后也无法最终判断网页最终什么时候加载完成。
二、通过webBrowser.ReadyState
通过每一次读取webBrowser.ReadyState,如同上前面所列的一样,每一次DocumentCompleted完成之事都会置ReadyState为Complete
,所以还是无法准确判断网页是否完成准确的判断。
三、通过webBrowser.IsBusy,有的人甚至在此基础上判断什么URL或者加Timer等等,程序复杂,效果也不太理想。我想能不能通过多个简单的方法,准确的判断网页否加载完成呢?
下面看看我的代码:
复制代码
private
void
Delay(int
Millisecond)
//延迟系统时间,但系统又能同时能执行其它任务;
{
DateTime
current
=
DateTime.Now;
while
(current.AddMilliseconds(Millisecond)
>
DateTime.Now)
{
Application.DoEvents();//转让控制权
}
return;
}
主要的函数:
private
bool
WaitWebPageLoad()
{
int
i=0;
string
sUrl;
while
(true)
{
Delay(50);
//系统延迟50毫秒,够少了吧!
if
(webBrowser1.ReadyState
==
WebBrowserReadyState.Complete)
//先判断是否发生完成事件。
{
if
(!webBrowser1.IsBusy)
//再判断是浏览器是否繁忙
{
i
=
i
+
1;
if
(i
==
2)
{
sUrl
=
webBrowser1.Url.ToString();
if
(sUrl.Contains("res"))
//这是判断没有网络的情况下
{
return
false;
}
else
{
return
true;
}
}
continue;
}
i=0;
}
}
}
复制代码
在工作中遇到了这样的问题,那就是要判断WebBrowser浏览器网页是否加载完成,通过搜索发现网友们解决这一问题的几种方法,但都不能解决实际问题,现在我们就来看看网友们是如何解决这一问题的。
一、通过DocumentCompleted
事件
每一次网页完成之后都后发送DocumentCompleted
事件,但是拥有多个frame时,浏览器就会发送多个DocumentCompleted事件,所以到最后也无法最终判断网页最终什么时候加载完成。
二、通过webBrowser.ReadyState
通过每一次读取webBrowser.ReadyState,如同上前面所列的一样,每一次DocumentCompleted完成之事都会置ReadyState为Complete
,所以还是无法准确判断网页是否完成准确的判断。
三、通过webBrowser.IsBusy,有的人甚至在此基础上判断什么URL或者加Timer等等,程序复杂,效果也不太理想。我想能不能通过多个简单的方法,准确的判断网页否加载完成呢?
下面看看我的代码:
复制代码
private
void
Delay(int
Millisecond)
//延迟系统时间,但系统又能同时能执行其它任务;
{
DateTime
current
=
DateTime.Now;
while
(current.AddMilliseconds(Millisecond)
>
DateTime.Now)
{
Application.DoEvents();//转让控制权
}
return;
}
主要的函数:
private
bool
WaitWebPageLoad()
{
int
i=0;
string
sUrl;
while
(true)
{
Delay(50);
//系统延迟50毫秒,够少了吧!
if
(webBrowser1.ReadyState
==
WebBrowserReadyState.Complete)
//先判断是否发生完成事件。
{
if
(!webBrowser1.IsBusy)
//再判断是浏览器是否繁忙
{
i
=
i
+
1;
if
(i
==
2)
{
sUrl
=
webBrowser1.Url.ToString();
if
(sUrl.Contains("res"))
//这是判断没有网络的情况下
{
return
false;
}
else
{
return
true;
}
}
continue;
}
i=0;
}
}
}
复制代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询