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