6

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

也许我可以删除或阻止控制iframesTWebBrowser

4

1 回答 1

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;

来自德尔福文档:

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

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

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

于 2012-04-11T12:13:48.057 回答