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;
  • 相关阅读:
    C# Time Class using MySQL
    csharp: Double Convert To String
    csharp: 图片字符间距
    HtmlEntities
    csharp: Microsoft SqlHelper
    csharp: read excel using Aspose.Cells
    JAVA核心技术I---JAVA基础知识(命令行)
    JAVA核心技术I---JAVA基础知识(Jar文件导入导出)
    JAVA核心技术I---JAVA基础知识(package和import)
    JAVA核心技术I---JAVA基础知识(知识回顾)
  • 原文地址:https://www.cnblogs.com/honeynm/p/4182020.html
Copyright © 2011-2022 走看看