等待网页在WebBrowser Delphi中完全加载
当我按代码浏览时,我正在使用下面的代码等待页面完全加载,这非常有效,但当我单击页面中的链接时,如果页面包含框架,则会触发等待网页在WebBrowser Delphi中完全加载,delphi,Delphi,当我按代码浏览时,我正在使用下面的代码等待页面完全加载,这非常有效,但当我单击页面中的链接时,如果页面包含框架,则会触发WebBrowser1DocumentComplete或WebBrowser1NavigateComlete2事件数次 我想能够等待页面加载完全当我点击链接,但我不知道如何 WebBrowser1.导航(URL); 重复 Application.ProcessMessages; 睡眠(0); 直到WebBrowser1.ReadyState=ReadyState\u完成; 首先
WebBrowser1DocumentComplete
或WebBrowser1NavigateComlete2
事件数次
我想能够等待页面加载完全当我点击链接,但我不知道如何
WebBrowser1.导航(URL);
重复
Application.ProcessMessages;
睡眠(0);
直到WebBrowser1.ReadyState=ReadyState\u完成;
首先,您根本不应该使用这样的循环,您应该使用TWebBrowser.OnDocumentComplete
事件来检测文档何时准备就绪
其次,在HTML中使用框架时,在NavigateComplete2上获取多个OnDocumentComplete
/事件是预期的行为。每个帧都有一个事件,从主窗口得到最后一个事件
此行为记录在MSDN上:
当文档已完全加载且READYSTATE
属性已更改为READYSTATE\u COMPLETE
时,WebBrowser控件将触发DocumentComplete
事件。以下是关于此次事件触发的一些要点
- 在没有帧的页面中,此事件在加载完成后激发一次
- 在加载多个帧的页面中,此事件针对触发了
downloadbeagin
事件的每个帧触发
- 此事件
pDisp
参数与触发此事件的帧的IDispatch
接口指针相同
- 在加载过程中,最高级别的帧(不一定是顶级帧)触发最终的
DocumentComplete
事件。此时,pDisp
参数与最高级别帧的IDispatch
接口指针相同
甚至在Embarcadero的DocWiki中:
编写一个OnDocumentComplete
事件处理程序,以便在框架或文档完全加载到Web浏览器时执行特定操作。对于没有框架的文档,此事件在文档完成加载时发生一次。在包含多个帧的文档中,此事件对每个帧发生一次。当多帧文档完成加载时,Web浏览器最后一次触发事件
因此,在TWebBrowser.OnDocumentComplete
中,您需要检查pDisp
参数以查看它是否是主文档的IDispatch
。首先,您不应该使用这样的循环,您应该使用TWebBrowser.OnDocumentComplete
事件来检测文档何时准备就绪
其次,在HTML中使用框架时,在NavigateComplete2上获取多个OnDocumentComplete
/事件是预期的行为。每个帧都有一个事件,从主窗口得到最后一个事件
此行为记录在MSDN上:
当文档已完全加载且READYSTATE
属性已更改为READYSTATE\u COMPLETE
时,WebBrowser控件将触发DocumentComplete
事件。以下是关于此次事件触发的一些要点
- 在没有帧的页面中,此事件在加载完成后激发一次
- 在加载多个帧的页面中,此事件针对触发了
downloadbeagin
事件的每个帧触发
- 此事件
pDisp
参数与触发此事件的帧的IDispatch
接口指针相同
- 在加载过程中,最高级别的帧(不一定是顶级帧)触发最终的
DocumentComplete
事件。此时,pDisp
参数与最高级别帧的IDispatch
接口指针相同
甚至在Embarcadero的DocWiki中:
编写一个OnDocumentComplete
事件处理程序,以便在框架或文档完全加载到Web浏览器时执行特定操作。对于没有框架的文档,此事件在文档完成加载时发生一次。在包含多个帧的文档中,此事件对每个帧发生一次。当多帧文档完成加载时,Web浏览器最后一次触发事件
因此,在TWebBrowser.OnDocumentComplete
中,您需要检查pDisp
参数以查看它是否是主文档的IDispatch