我希望每次都阻止iframe
元素触发OnDocumentComplete
事件。例如,一个页面有4个iframe,当我加载此页面时,我的OnDocumentComplete
事件运行了4次。我想为每个页面只运行一次OnDocumentComplete
。我怎么能这样做?
也许我可以删除或阻止iframes
控件中的TWebBrowser
。
答案 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浏览器的界面。