WebBrowser控件如何判定完全加载完?

情傷 2012-06-28 10:44:30
弄了个Alexa采集的工具,采集Alexa官网上的数据,现要实现截屏功能,但截下来的图,都是只有上面一小部分
http://www.alexa.com/siteinfo/baidu.com
如上页面,要在Traffic Stats中的Traffic Rank 显示出来之后再截屏,判断ReadyState和IsBusy没啥效果!
求指点!
webBrowser的DocumentCompleted事件如下
        
//WebBrowser加载完成事件
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{

if ((webBrowser1.ReadyState == WebBrowserReadyState.Interactive) && startChinaz)
{
SetIPPv();
GetAlexaFromChinaz(indexChinaz);
}
if (startAlexa && webBrowser1.ReadyState == WebBrowserReadyState.Interactive)
{

if (aaa == 0)
{

HtmlElement a = webBrowser1.Document.All["trafficstats_a"];
if (a != null)
{
aaa = 1;
a.Click += new HtmlElementEventHandler(a_Click);
a.InvokeMember("click");
}
}
else if (aaa == 1)
{
aaa = 2;
//tw-tabList ul 下第一个li
HtmlElement a = webBrowser1.Document.All["tw-tabList"];
if (a != null)
{
a.Children[0].Click += new HtmlElementEventHandler(Form1_Click);
a.InvokeMember("click");
}
}
else
{
while (!webBrowser1.IsBusy && webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{

//暂停2秒
System.Threading.Thread.Sleep(10000);
aaa = 0;



// 获取网页高度和宽度,也可以自己设置
int height = webBrowser1.Document.Body.ScrollRectangle.Height;
int width = webBrowser1.Document.Body.ScrollRectangle.Width;


Bitmap bitmap = new Bitmap(width, height); // 创建高度和宽度与网页相同的图片
Rectangle rectangle = new Rectangle(0, 0, width, height); // 绘图区域
webBrowser1.DrawToBitmap(bitmap, rectangle); // 截图

// 保存图片对话框
//SaveFileDialog saveFileDialog = new SaveFileDialog();
//saveFileDialog.Filter = "JPEG (*.jpg)|*.jpg|PNG (*.png)|*.png";
//saveFileDialog.ShowDialog();
if (!Directory.Exists(@"d:\AlexaImg\"))
{
Directory.CreateDirectory(@"d:\AlexaImg\");
}
bitmap.Save(@"d:\AlexaImg\" + DateTime.Now.ToString("yyyyMMddhhmmss") + list[index].DomainUrl + ".jpg"); // 保存图片


//设置Alexa信息
SetAlexaInfo();

GetAlexa(index);

}
}
}
//}
}
...全文
651 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
情傷 2012-08-27
  • 打赏
  • 举报
回复
顶起啊~MVP呢?大牛呢?
zhuimengjian1987 2012-07-30
  • 打赏
  • 举报
回复
求解啊,我也遇到了相同的问题!
情傷 2012-07-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

如果 ajax 的 DocumentCompleted 判断不了。可以给这个页面注入一个 js,轮询关键的html是否加载完成。
[/Quote]详解
机器人 2012-07-04
  • 打赏
  • 举报
回复
如果 ajax 的 DocumentCompleted 判断不了。可以给这个页面注入一个 js,轮询关键的html是否加载完成。
tiger04522 2012-07-04
  • 打赏
  • 举报
回复
不过有ajax有时候,这个状态好像不行
bluk44444 2012-06-28
  • 打赏
  • 举报
回复
webBrowser1.ReadyState == WebBrowserReadyState.Complete 是加载完毕的状态

或者你判断webBrowser1是否处于空闲状态!~!~
heycoder 2012-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

webBrowser1.ReadyState == WebBrowserReadyState.Complete 是加载完毕的状态
[/Quote]

+1
kunkun0921 2012-06-28
  • 打赏
  • 举报
回复
webBrowser1.ReadyState == WebBrowserReadyState.Complete 是加载完毕的状态
情傷 2012-06-28
  • 打赏
  • 举报
回复
页面加载之后,死活不进webBrowser1.ReadyState == WebBrowserReadyState.Complete 这里
webBrowser1.ReadyState一直等于Interactive

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧