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!

  • 相关阅读:
    第二章 Java程序设计环境
    第一章 Java程序设计概述
    (五)Java工程化--Jenkins
    (二)Java工程化--Maven实践
    (四)Java工程化--Git基础
    (三)Java工程化--Git起步
    (一)Java工程化--Maven基础
    codeblocks 中文编码问题
    win10安装virtualbox发生严重错误
    利用ssh传输文件
  • 原文地址:https://www.cnblogs.com/honeynm/p/4437851.html
Copyright © 2011-2022 走看看