如何避免嵌入式iframe元素的OnDocumentComplete事件?

时间:2012-04-11 11:38:29

标签: delphi iframe delphi-7 twebbrowser

我希望每次都阻止iframe元素触发OnDocumentComplete事件。例如,一个页面有4个iframe,当我加载此页面时,我的OnDocumentComplete事件运行了4次。我想为每个页面只运行一次OnDocumentComplete。我怎么能这样做?

也许我可以删除或阻止iframes控件中的TWebBrowser

1 个答案:

答案 0 :(得分:14)

主文档中的每个FRAME / IFRAME都会触发事件OnDocumentComplete
如果你想忽略它们,试试这个:

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  // check that the event is raised for the top-level browser (not frames or iframes)
  if pDisp = TWebBrowser(Sender).ControlInterface then
  begin
    // do something nice...
  end;
end;

来自Delphi Docs:

  

编写OnDocumentComplete事件处理程序,以便在将框架或文档完全加载到Web浏览器时执行特定操作。对于没有框架的文档,此事件在文档完成加载时发生一次。在包含多个框架的文档上,每个框架都会发生一次此事件。当多帧文档完成加载时,Web浏览器最后一次触发事件。

     

Sender是正在加载文档的Web浏览器。

     

pDisp是顶级框架或浏览器的Automation界面。   加载没有框架的文档时,pDisp是该框架的界面   网页浏览器。加载具有多个框架的文档时,这就是   包含框架的界面,最后一次除外   事件发生时,它是Web浏览器的界面。