在页面加载完成,所有数据请求结束后浏览器标题左侧的图标不在显示加载中,前端如何检测这个事件?或者有什么方法能够做到?(并不知道页面有多少个ajax请求)
这是一个运行五年的老系统,几百个页面
如果不需要通过ajax的回调就能知道请求是否成功(或者是否结束),那么ajax要回调还有何用?
如果需要通过ajax的回调函数来判断请求是否成功(或者是否结束),那么你不知道有多少个ajax怎么判断是否加载成功/结束?
-----------------------------------
你截图的那个小图标,它在转表示静态资源没有加载完成,ajax这种是动态请求数据的,它请求数据的时候,和上面那个图标没关系,图标不转了表示静态资源加载完成, 但不表示ajax请求完成.....
你只能在JS的页面加载完毕事件里去写静态资源加载完成后的逻辑,但所有的ajax请求是否完成,你是判断不出来的.
好的,非常感谢
无法做到。比如动态加载,延迟加载等等,可能浏览器都无法预知。
只能按照你括号内可以完全判定。
谢谢回答,现在是需要在整个网站页面添加数据加载完成进度条,如果判断有几个数据请求做判断再处理太花费时间了
js中有好像几个事件 onload是加载完成,包括图片,文件等所有事件 ready是所有dom结构完成就执行.
嗯,但是这些并不能检测到ajax数据请求的完成
@钉子杂论: ajax请求的话能执行到success中就代表执行完成吧 还有ajax请求浏览器标题左侧的图标都是不可能显示加载中的,ajax本身就不刷新页面的 一般执行是调用ajax是jquery写一个弹框或者页面灰色表示正在执行中, 到success并完成相应处理后 ,js取消正在执行的标志
@河畔: 谢谢,我对标题图标加载理解错误,我想知道的答案不是一个ajax请求问题,是想判断页面多个数据加载完成
@钉子杂论: 用document.onreadystatechange的方法来监听状态改变,
然后用document.readyState == “complete”判断是否加载完成
看请求的返回值吧
如果你是AJAX的那倒是容易了,加个标志字段就行了。
有几个AJAX你写的人总是知道的,等到所有的返回都成功了,再将标志设置为True。
因为需要系统所有页面都加上进度条,不是某一个页面或者新开发的新页面,系统比较大,几百个页面
计数器,你自己包装一个ajax方法,所有的请求都走你这里。计数器为0,表示全部完成。