怎么判断webbrowser能否打开网页

 我来答
EvenHHZ
2016-10-25 · 知道合伙人软件行家
EvenHHZ
知道合伙人软件行家
采纳数:13691 获赞数:18845
个人出版图书:《玩转Python网络爬虫》、《玩转Django2.0》

向TA提问 私信TA
展开全部
一、通过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;
}
}
}
百度网友e2d33c0fbe
2016-10-25 · TA获得超过1.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:2%
帮助的人:7372万
展开全部
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, SHDocVw; type TForm1 = class(TForm) WebBrowser1: TWebBrowser; Button1: TButton; Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure WebBrowser1DownloadBegin(Sender: TObject); procedure WebBrowser1DownloadComplete(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin form1.WebBrowser1.Navigate('www.ivytc.com'); end; procedure TForm1.WebBrowser1DownloadBegin(Sender: TObject); begin edit1.Text :='开始'; end; procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject); begin edit1.Text :='完成打开'; end; end.

回答不容易,希望能帮到您,满意请帮忙采纳一下,谢谢 !
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式