webbrowser 加载完毕如何判断特定URL的网页加载完毕,DocumentCompleted 事件只能是全局的

webBrowser如何判断一个url真正加载完成,这个url页面中有ajax的调用
[问题点数:20分,结帖人shbaby008]
webBrowser如何判断一个url真正加载完成,这个url页面中有ajax的调用
[问题点数:20分,结帖人shbaby008]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
匿名用户不能发表回复!|01:49 提问
判断webbrowser浏览器是否加载完毕
判断webbrowser浏览器是否加载完毕,我是用DocumentCompleted事件来判断网页加载完成的,但是在执行循环的时候有时貌似无法真正判断加载结束,我一步一步调试执行不会报错,但是在正式运行就会出现无法读取元素的问题
while(true)
///最外层循坏,一直执行
for (int vi = 0; vi & visitlist.Rows.C vi++)
WBwinform.Navigate("https://www.baidu.com/");
while (loading)
Application.DoEvents();//等待本次加载完毕才执行下次循环.
//设置要搜索的关键词
string huashanlin_keys = visitlist.Rows[vi]["KeyWord"].ToString();
//模拟人工查看或输入关键词等行为需要的3秒
// Thread.Sleep(3000);
//找到页面中输入关键字的input标签
HtmlElement key0s = WBwinform.Document.All["kw"];
//为input标签输入value值
key0s.SetAttribute("value", huashanlin_keys);
//找到页面中button或者submit按钮
HtmlElement hit = WBwinform.Document.All["su"];
//触发搜索按钮的click事件
按赞数排序
因为现在有了ajax异步加载,所以对于什么算网页加载完毕的定义已经模糊了。比如说一个在线聊天程序,可以认为它永远加载不完。
所以你能做的,是去判断你需要的标签是否存在,是否有你需要的数据作为加载完毕的标志。
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
默认HTML 文档是这样:
想在文档最上面加入一段代码,效果如:
&script src="xxx.js"&&/script&
--问题没描述清楚,追加一下
在html文档加载之前加入一段 script 代码
我自己想到了,可以用webclient 把数据下载下来,然后设置webBrowser的DocumentText 即可
C# 代码反复试了一些方法不是很有效,甚至不执行
1、设置webBrowser.DocumentText,不管用
private void FormMain_Load(object sender, EventArgs e)
AddressInfo info = new CodeParser().Parse(this.code);
webBrowser.ObjectForScripting =
//webBrowser.ScriptErrorsSuppressed =
string src = "http://xxxx.com/xx.js?time=" + DateTime.Now.ToString("yyyyMMddhhmm");
webBrowser.DocumentText = @"&script src=""" + src + @""" charset=""utf-8"" type=""text/javascript""&&/script&";
if (info != null)
if (!string.IsNullOrEmpty(info.UrlString))
webBrowser.Navigate(info.UrlString);
2、在 webBrowser_DocumentCompleted 时设置 webBrowser.DocumentText,也不管用
private void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
WebBrowserReadyState state = ((WebBrowser)sender).ReadyS
switch (state)
case WebBrowserReadyState.Complete:
MessageBox.Show("Complete");
case WebBrowserReadyState.Interactive:
MessageBox.Show("Interactive");
case WebBrowserReadyState.Loaded:
MessageBox.Show("Loaded");
case WebBrowserReadyState.Loading:
MessageBox.Show("Loading");
case WebBrowserReadyState.Uninitialized:
MessageBox.Show("Uninitialized");
MessageBox.Show("default");
if (state == WebBrowserReadyState.Loading)
MessageBox.Show("fuck");
string src = "http://xxxx.com/xx.js?time=" + DateTime.Now.ToString("yyyyMMddhhmm");
webBrowser.DocumentText = @"&script src=""" + src + @""" charset=""utf-8"" type=""text/javascript""&&/script&";
HtmlElement script = webBrowser.Document.CreateElement("script");
script.SetAttribute("src", src);
script.SetAttribute("charset", "utf-8");
webBrowser.Document.Body.AppendChild(script);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在html文档加载之前加入一段 script 代码
我自己想到了,可以用webclient 把数据下载下来,然后设置webBrowser的DocumentText 即可
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
可以是可以的。
只是我想跟你说,你得学会使用搜索引擎。虽然有社区但是这种问题,有时候得靠自己。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
System.Windows.Forms.WebBrowser事实上是SHDocVw.WebBrowser的封装,有很多SHDocVw.WebBrowser有,但是System.Windows.Forms.WebBrowser未实现的功能添加引用库SHDocVw, 然后通过(SHDocVw.WebBrowser)FormsWbObj.ActiveXInstance得到SHDocVw.WebBrowser对象;SHDocVw.WebBrowser.BeforeScriptExecute这个事件发生在浏览器中页面加载完毕和后页面脚本执行之前,且每个页面子框架页面加载的时候都会触发然后我想你们应该知道怎么做了吧另外代码联想可能打不出对应的委托名,在这里发一下SHDocVw.DWebBrowserEvents2_BeforeScriptExecuteEventHandler
该答案已被忽略,原因:
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。WebBrowser的DocumentCompleted事件多次被调用,如何判断页面加载完毕 - C#当前位置:& &&&WebBrowser的DocumentCompleted事件多次被调用,如WebBrowser的DocumentCompleted事件多次被调用,如何判断页面加载完毕www.MyException.Cn&&网友分享于:&&浏览:353次WebBrowser的DocumentCompleted事件多次被调用,怎么判断页面加载完毕。比如WebBrowser打开http://www.abc.com/index.htm页面时,同时访问了下面的url,怎么判断页面加载所有url完毕。
http://www.abc.com/index.htm
http://m.abc.com/123.htm
------解决方案--------------------通过webBrowser的IsBusy属性判断
private&void&webBrowser1_DocumentCompleted(object&sender,&WebBrowserDocumentCompletedEventArgs&e)
&&&&&&&&&&&&if&(!webBrowser1.IsBusy)
&&&&&&&&&&&&&&&&Console.WriteLine("加载完毕!");
&&&&&&&&&&&&else
&&&&&&&&&&&&&&&&Console.WriteLine("加载中...");
&&&&&&&&}------解决方案--------------------&哦,想起来了,这个事件只触发一次,我以前遇到过,后来用循环等待解决的
private&void&webBrowser1_DocumentCompleted(object&sender,&WebBrowserDocumentCompletedEventArgs&e)
&&&&&&&&&&&&while(webBrowser1.IsBusy)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&&&Console.WriteLine("加载中...");
&&&&&&&&&&&&&&&&Application.DoEvents();
&&&&&&&&&&&&&&&&System.Threading.Thread.Sleep(10);
&&&&&&&&&&&&}
&&&&&&&&&&&&Console.WriteLine("加载完毕!");&&&&&&&&&&&&&&&&
&&&&&&&&}------解决方案--------------------引用:哦,想起来了,这个事件只触发一次,我以前遇到过,后来用循环等待解决的
C#&code?1private&void&webBrowser1_DocumentCompleted(object&sender,&WebBrowserDocumentCompletedEventArgs&e)&&&&&&&&{&&&&&&&&&&&&while(webBr……
楼上代码很赞------解决方案--------------------比如说一个页面,有js定时器,设置为每秒刷新1次,那么你说的文档加载完是什么时候?
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有没有更多推荐了,
不良信息举报
举报内容:
谨慎注意WebBrowser控件的DocumentCompleted事件
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 硬盘加载网页完毕 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信