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

Lea*_*dri 6 delphi iframe delphi-7 twebbrowser

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

也许我可以删除或封锁iframesTWebBrowser控制.

kob*_*bik 14

OnDocumentComplete针对主文档中的每个FRAME/ 触发该事件IFRAME.
如果你想忽略它们试试这个:

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;
Run Code Online (Sandbox Code Playgroud)

来自Delphi Docs:

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

Sender是加载文档的Web浏览器.

pDisp是顶级框架或浏览器的自动化界面.加载没有框架的文档时,pDisp是Web浏览器的界面.当加载具有多个框架的文档时,这是包含框架的界面,除了最后一次事件发生时,它是Web浏览器的界面.

  • +1,我永远不会想到这一点.太好了! (5认同)