首页 新闻 会员 周边 捐助

如何判断浏览器页面所有数据请求结束?

0
悬赏园豆:100 [已解决问题] 解决于 2018-06-15 17:00

在页面加载完成,所有数据请求结束后浏览器标题左侧的图标不在显示加载中,前端如何检测这个事件?或者有什么方法能够做到?(并不知道页面有多少个ajax请求)

问题补充:

这是一个运行五年的老系统,几百个页面

钉子杂论的主页 钉子杂论 | 初学一级 | 园豆:112
提问于:2018-06-15 10:50
< >
分享
最佳答案
1

如果不需要通过ajax的回调就能知道请求是否成功(或者是否结束),那么ajax要回调还有何用?

如果需要通过ajax的回调函数来判断请求是否成功(或者是否结束),那么你不知道有多少个ajax怎么判断是否加载成功/结束?

-----------------------------------

你截图的那个小图标,它在转表示静态资源没有加载完成,ajax这种是动态请求数据的,它请求数据的时候,和上面那个图标没关系,图标不转了表示静态资源加载完成, 但不表示ajax请求完成.....

你只能在JS的页面加载完毕事件里去写静态资源加载完成后的逻辑,但所有的ajax请求是否完成,你是判断不出来的.

收获园豆:40
顾星河 | 大侠五级 |园豆:7262 | 2018-06-15 12:04

好的,非常感谢

钉子杂论 | 园豆:112 (初学一级) | 2018-06-15 13:09
其他回答(5)
0

无法做到。比如动态加载,延迟加载等等,可能浏览器都无法预知。

只能按照你括号内可以完全判定。

收获园豆:20
花飘水流兮 | 园豆:13595 (专家六级) | 2018-06-15 11:29

谢谢回答,现在是需要在整个网站页面添加数据加载完成进度条,如果判断有几个数据请求做判断再处理太花费时间了

支持(0) 反对(0) 钉子杂论 | 园豆:112 (初学一级) | 2018-06-15 11:57
1

js中有好像几个事件  onload是加载完成,包括图片,文件等所有事件   ready是所有dom结构完成就执行.

河畔 | 园豆:738 (小虾三级) | 2018-06-15 11:34

嗯,但是这些并不能检测到ajax数据请求的完成

支持(0) 反对(0) 钉子杂论 | 园豆:112 (初学一级) | 2018-06-15 11:54

@钉子杂论: ajax请求的话能执行到success中就代表执行完成吧   还有ajax请求浏览器标题左侧的图标都是不可能显示加载中的,ajax本身就不刷新页面的   一般执行是调用ajax是jquery写一个弹框或者页面灰色表示正在执行中, 到success并完成相应处理后 ,js取消正在执行的标志

支持(0) 反对(0) 河畔 | 园豆:738 (小虾三级) | 2018-06-15 12:00

@河畔: 谢谢,我对标题图标加载理解错误,我想知道的答案不是一个ajax请求问题,是想判断页面多个数据加载完成

支持(0) 反对(0) 钉子杂论 | 园豆:112 (初学一级) | 2018-06-15 13:16

@钉子杂论: 用document.onreadystatechange的方法来监听状态改变, 
然后用document.readyState == “complete”判断是否加载完成 

支持(0) 反对(0) 河畔 | 园豆:738 (小虾三级) | 2018-06-15 13:38
0

看请求的返回值吧

good_idea | 园豆:74 (初学一级) | 2018-06-15 11:59
0

如果你是AJAX的那倒是容易了,加个标志字段就行了。

有几个AJAX你写的人总是知道的,等到所有的返回都成功了,再将标志设置为True。

收获园豆:20
爱编程的大叔 | 园豆:30844 (高人七级) | 2018-06-15 12:20

因为需要系统所有页面都加上进度条,不是某一个页面或者新开发的新页面,系统比较大,几百个页面

支持(0) 反对(0) 钉子杂论 | 园豆:112 (初学一级) | 2018-06-15 13:12
0

计数器,你自己包装一个ajax方法,所有的请求都走你这里。计数器为0,表示全部完成。

收获园豆:20
幻天芒 | 园豆:37205 (高人七级) | 2018-06-15 15:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册