TWebBrowser流程讲解及如何判断下载网页成功

原创 2001年01月11日 09:07:00
主  题:用TWebBrowser下载网页时如何判断是否成功?急!
作  者:CBuilder
所属论坛:Delphi
问题点数:20
回复次数:1
发表时间:2001-1-11 8:30:00
某资料上说,OnNavigateComplete2事件只在下载成功时才会触发,可我反复试验发现不管成功与否它都会触发。怎样判断是否下载成功呢?急!!!


回复贴子:
t5.gif 回复人:mutant(异类) (2001-1-11 9:06:00) 得0分
procedure TfrmIE2.WebDocumentComplete(Sender: TObject; pDisp: IDispatch;
  var URL: OleVariant);
看见了吧,是OnDocumentComplete事件触发的下载完毕,还会告诉你是那个URL被下载完毕了,非常好用哦.因为页面中如果有IFrame,那么每个IFrame会触发一个DocumentComplete事件.

那我们怎么判断是否全部下载完毕呢?嘿嘿,TWebBrowser控件不是有一个Busy属性的吗?

procedure TfrmIE2.WebDocumentComplete(Sender: TObject; pDisp: IDispatch;
  var URL: OleVariant);
begin
  if not(Web.Busy) then begin
    ShowMessage('下载完毕');
  end;
end;
对于每次连接(不论是鼠标点击还是用Navigate2方法连接),TWebBrowser的流程是这样的:

OnBeforeNavigate2          <--开始链接时会触发此事件
OnNavigateComplete2        <--成功的链接到此网页(以后才会有下面的事件)
OnDownloadBegin            <--开始下载
OnDownloadComplete          <--下载结束
OnDocumentComplete          <--页面下载完毕

对于每个HTML页面,顺序都是如此.如果是Frame或IFrame的文件都会当成HTML页面处理.也就是说如果一个页面中有3个IFrame,那么总共会触发4次BeforeNavigate2事件.

对于每个连接且需要显示出来的二进制文件(如*.gif,*.bmp,*.jpg...)都会触发一个DownloadBegin和DownloadComplete事件.

TWebBrowser流程讲解及如何判断下载网页成功

某资料上说,OnNavigateComplete2事件只在下载成功时才会触发,可我反复试验发现不管成功与否它都会触发。怎样判断是否下载成功呢?急!!!回复贴子: 回复人:mutant(异类) (200...
  • gseven888
  • gseven888
  • 2008年03月05日 23:37
  • 261

WebBrowser判断页面是否下载结束

方法1:procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;    const pDisp: IDispatch; var UR...
  • ffstarff
  • ffstarff
  • 2013年02月27日 17:22
  • 391

TWebBrowser控件使用指定IE版本显示网页

好记性不如烂笔头,转自QQ群。 procedure IEEmulator(VerCode: Integer); var RegObj: TRegistry; begin RegObj := ...
  • tht2009
  • tht2009
  • 2015年11月20日 10:37
  • 1577

使用TWebBrowser组件保存网页为html和mht文件

 一、保存为HTML文件uses ActiveX;...procedure WB_SaveAs_HTML(WB : TWebBrowser; const FileName : string) ;var...
  • sunstone
  • sunstone
  • 2009年11月09日 10:44
  • 3164

Delphi处理TWebBrowser的Close事件

当TWebBrowser控件访问的 Web 页上的脚本调用window.close方法时,TWebBrowser控件可能会在窗体中消失。我们的程序应该对此作出反应,否则再次访问TWebBrowser控...
  • diligentcat
  • diligentcat
  • 2013年12月10日 13:13
  • 736

如何在Web上判断是否已经安装了某个ActiveX控件

1. 用JavaScript检测系统中是否已经安装了某个ActiveX控件 try { var ax = new ActiveXObject("控件名称"); alert("已安装"...
  • huang_xw
  • huang_xw
  • 2012年03月09日 21:09
  • 9887

Delphi中使用TWebBrowser时存在内存泄漏问题

我在这篇blog: http://blog.csdn.net/ScriptBaby/archive/2004/07/24/50989.aspx 中提到了TWebBrowser的内存泄漏问题. 也许是大...
  • ScriptBaby
  • ScriptBaby
  • 2007年05月20日 23:19
  • 2971

Delphi自动提交网页表单和获取框架网页源码

这两个问题的实现原理其实是差不多的,所以放在一起介绍,单元MSHtml封装了我们需要的功能。 首先,新建一个DELPHI工程,在USES部分添加MSHtml单元的引用。 然后,在窗体上放置...
  • diligentcat
  • diligentcat
  • 2013年12月10日 13:24
  • 1416

初学 stm32 的USB 开发

USB 大概分为三类:
  • u012572862
  • u012572862
  • 2014年08月09日 15:50
  • 746

关于资料下载

到外国官网下东西,最好用迅雷。速度非常快。
  • hnzhangshilong
  • hnzhangshilong
  • 2011年07月23日 15:47
  • 550
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TWebBrowser流程讲解及如何判断下载网页成功
举报原因:
原因补充:

(最多只允许输入30个字)