• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Delphi中WebBrowser判断页面及JS是否加载完成

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

时间很完了,但问题总算解决了。

在一个程序中需要判断WebBrowser打开的页面是否加载完成,通常的做完是使用Busy属性,代码如下:

while WebBrowser1.Busy do

    Application.ProcessMessages;

这个访问对于访问纯Html的页面时是一点儿问题都没有的,但有些页面在设计时为了不影响打开速度,是让html代码优先显示,然后再运行js代码或框架代码,由于我要访问的页面中没有调用框架页面,所以没作测试。

经过一夜的摸索,最终找到了解决办法:

procedure TForm1.wb1ProgressChange(Sender: TObject; Progress,
  ProgressMax: Integer);
begin
    //判断页面及JS是否执行完毕
    if ( Progress = 0 ) and ( ProgressMax = 0 ) and
        ( OldProgress = -1 ) then
    begin
        IsWebLoadComplete := True;
    end;


    OldProgress := Progress;
end;

在此之前我对ProgressChange事件参数中的值进行了跟踪,发现当前进度的值和总进度的值相等后并不一定代表页面全部加载完成,但页面在加载完成后,Progress和ProgressMax的后两个值却总是-1/1000000和0/0。Progress的值为-1,有可能是页面全部加载完成了,但也有可能是只加载完了需要访问的其中一个页面文件。

经过多次测试,当-1/1000000和0/0接连出现时,就可以保证页面已经全部加载完成了。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab设计模拟低通滤波器发布时间:2022-07-18
下一篇:
matlab快速入门(12):对向量执行数组运算发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap