zoukankan      html  css  js  c++  java
  • TWebBrowser: Determine when a page with Frames is completed

    TWebBrowser: Determine when a page with Frames is completed

    comments6 comments. Current rating: 5 stars (3 votes). Leave comments and/ or rate it.

    Question:

    If I load a web page with TWebBrowser that contains frames then the OnDocumentComplete() is hit for each frame. How can I recognize that the page is completely loaded (no more frames missing)?

    Answer:

    Indeed, in case of multiple frames, OnDocumentComplete gets fired multiple times. Not every frame fires this event, but each frame that fires a DownloadBegin event will fire a corresponding DocumentComplete event.

    How can the 'real completion' be recognized?

    The OnDocumentComplete event sends parameter pDisp: IDispatch, which is the IDispatch of the frame (shdocvw) for which DocumentComplete is fired. The top-level frame fires the DocumentComplete in the end.

    So, to check if a page is done downloading, you need to check if pDisp is same as the IDispatch of the WebBrowser control.

    That's what the code below demonstrates.

     
     
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
                   const pDisp: IDispatch; var URL: OLEvariant);
    var
      CurWebrowser : IWebBrowser;
      TopWebBrowser: IWebBrowser;
      Document     : OLEvariant;
      WindowName   : string;
    begin { TForm1.WebBrowser1DocumentComplete }
      CurWebrowser := pDisp as IWebBrowser; 
      TopWebBrowser := (Sender as TWebBrowser).DefaultInterface; 
      if CurWebrowser=TopWebBrowser then 
      begin
        ShowMessage('Document is complete.') 
      end
      else 
      begin 
        Document := CurWebrowser.Document; 
        WindowName := Document.ParentWindow.Name; 
        ShowMessage('Frame ' + WindowName + ' is loaded.')
      end;
    end;
  • 相关阅读:
    oracle数据库闪回执行步骤——oracle数据库回退
    10.20总结
    10.11总结
    10.10总结
    10.9总结
    10.8总结
    10.7总结
    10.6总结
    10.5总结
    10.4总结
  • 原文地址:https://www.cnblogs.com/honeynm/p/4182020.html
Copyright © 2011-2022 走看看