js检测页面ajax请求

卡卡吉利 2017-04-13 04:04:50
我在一个页面加了一段js,需要页面完全加载完成后执行,但是这个页面有很多内容都是通过ajax请求获取的,我无法知道何时页面完全加载完成,也不能修改别人的js,我想js能不能检测页面当前有没有http或者https请求来判断页面时候已经完成
...全文
481 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
文盲老顾 2017-04-14
  • 打赏
  • 举报
回复
重写 window.XMLHttpRequest 进行检测 http://www.jb51.NET/article/91419.htm
Go 旅城通票 2017-04-13
  • 打赏
  • 举报
回复
居于jquery还是什么?如果是jquery可以注册全局beforeSend 和complete 事件,jQuery.ajaxSetup放在所有jquery框架下,一个全局变量(初始0)来收集总的ajax

beforeSend 全局变量+1,complete -1并且判断全局变量为0就说明全部请求完毕了,执行你要的代码

如果不是jquery就没搞了。。只能自己查看ajax请求更新的容器,计时器定时检查容器内容是否改变,不过这个办法也不能100%检查正确,要是网络出错没跟新就没搞了
卡卡吉利 2017-04-13
  • 打赏
  • 举报
回复
引用 1 楼 cn00439805 的回复:
假设页面上有个随机推荐位,别人做法是每3秒用ajax轮询服务器 又假设有3层嵌套ajax,每层都要等到上一次ajax请求完成再发请求。 如果碰到以上2种页面,你的应对策略是什么?
不考虑循环请求的情况,假定一开始就有一批ajax请求,请求完了就不会再有
cn00439805 2017-04-13
  • 打赏
  • 举报
回复
我给你的策略是: 5秒内检测dom是否一样,一样就表示页面加载完成了。 不一样,则再次启动5秒检测。 你觉得合理否?

function check(success){
	var interval = 5000;   //5秒检测
	var html = document.documentElement.innerHTML;
	setTimeout(function(){
		if(html === document.documentElement.innerHTML){
			success();
		}
		else{
			check(success);
		}
	},interval);
}

check(function(){
	// all complete
})
cn00439805 2017-04-13
  • 打赏
  • 举报
回复
假设页面上有个随机推荐位,别人做法是每3秒用ajax轮询服务器 又假设有3层嵌套ajax,每层都要等到上一次ajax请求完成再发请求。 如果碰到以上2种页面,你的应对策略是什么?

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧