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

(以下是从网络上复制的Delphi代码,但C#中的WebBrowser也类似)

某资料上说,onnavigatecomplete2事件只在下载成功时才会触发,可我反复试验发现不管成功与否它都会触发。怎样判断是否下载成功呢?

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事件.