WebBrowser判斷頁面是否下載結束

方法1:procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
   const pDisp: IDispatch; var URL: OleVariant);
begin    if WebBrowser1.Application = pDisp then showmessage('頁面已全部下載完畢')end;    說明一下,每個iframe下載完畢都會觸發DocumentComplete事件,所以一個頁面在真正下載完畢前可能被觸發多次

方法2:procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
var
CurWebrowser: IWebBrowser;
TopWebBrowser: IWebBrowser;
Document: OleVariant;
WindowName: string;
begin
CurWebrowser := pDisp as IWebBrowser;
TopWebBrowser := (Sender as TWebBrowser).DefaultInterface;
if CurWebrowser = TopWebBrowser then
ShowMessage('Complete document was loaded')
else
begin
Document := CurWebrowser.Document;
WindowName := Document.ParentWindow.Name;
ShowMessage(Format('Frame "%s" was loaded', [WindowName]));
end;
end;

方法3:

var isok::boolean

procedure TForm1.wbProgressChange(Sender: TObject; Progress,
  ProgressMax: Integer);
begin
  if progress=-1 then isok:=true;
end;

總結:三個方法都可能對,也都可能不對,特別是現在還有AJAX的存在,我的想法是把每一種方法都試一下,自己看一下變量變化,相應的調整方法,得到滿意的結果,偶個人建議使用第三種,簡單明瞭而且實用。針對AJAX可以通過獲取的HTML來判斷,因爲它是不刷新頁面的,所以不用擔心取不到HTML,同時它雖然沒刷新頁面,但它肯定會刷新數據,如果新新數據出現了,那麼頁也就加載完成了,當然具體問題具體分析。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章