资料来源:网络整理
时间:2023/2/14 0:10:21 共计:3609 浏览
在工作中遇到了这样的问题,那就是要判断WebBrowser浏览器网页是否加载完成,通过搜索发现网友们解决这一问题的几种方法,但都不能解决实际问题,现在我们就来看看网友们是如何解决这一问题的。
一、通过DocumentCompleted 事件
每一次网页完成之后都后发送DocumentCompleted 事件,但是拥有多个frame时,浏览器就会发送多个DocumentCompleted事件,所以到最后也无法最终判断网页最终什么时候加载完成。
二、通过webBrowser.ReadyState
通过每一次读取webBrowser.ReadyState,如同上前面所列的一样,每一次DocumentCompleted完成之事都会置ReadyState为Complete ,所以还是无法准确判断网页是否完成准确的判断。
三、通过webBrowser.IsBusy,有的人甚至在此基础上判断什么URL或者加Timer等等,程序复杂,效果也不太理想。我想能不能通过多个简单的方法,准确的判断网页否加载完成呢?
下面看看我的代码:
[csharp] view plaincopy
-
private void Delay(int Millisecond)
-
{
-
DateTime current = DateTime.Now;
-
while (current.AddMilliseconds(Millisecond) > DateTime.Now)
-
{
-
Application.DoEvents();
-
}
-
return;
-
}
主要的函数:
[csharp] view plaincopy
-
private bool WaitWebPageLoad()
-
{
-
int i=0;
-
string sUrl;
-
while (true)
-
{
-
Delay(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;
-
}
-
}
//当然你也可以加上超时的情况,那就让你自己解决了。
版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。