我想防止元素每次都iframe
触发事件。OnDocumentComplete
例如,一个页面有 4 个 iframe,当我加载这个页面时,我的OnDocumentComplete
事件会运行 4 次。我只想OnDocumentComplete
为每个页面运行一次。我怎样才能做到这一点?
也许我可以删除或阻止控制iframes
。TWebBrowser
我想防止元素每次都iframe
触发事件。OnDocumentComplete
例如,一个页面有 4 个 iframe,当我加载这个页面时,我的OnDocumentComplete
事件会运行 4 次。我只想OnDocumentComplete
为每个页面运行一次。我怎样才能做到这一点?
也许我可以删除或阻止控制iframes
。TWebBrowser
主文档中的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 浏览器的界面。