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;
    
     
     

    You don't like the formatting? Check out SourceCoder then!

  • 相关阅读:
    我的第一个项目--总结
    c++中的继承
    指针带来的意想不到的功能紊乱
    一个很难发现的内存泄漏
    我的第一个项目--迭代开发总结
    内存访问冲突问题(非法内存访问)
    Debug Assertion Failed mfc140ud.dll
    javaweb 开发总结五-----servlet开发(一)
    javaweb学习总结四---http协议
    Tomcat服务器学习和使用二·
  • 原文地址:https://www.cnblogs.com/honeynm/p/4437851.html
Copyright © 2011-2022 走看看