我在一个页面加了一段js,需要页面完全加载完成后执行,但是这个页面有很多内容都是通过ajax请求获取的,我无法知道何时页面完全加载完成,也不能修改别人的js,我想js能不能检测页面当前有没有http或者https请求来判断页面时候已经完成

解决方案 »

  1.   

    假设页面上有个随机推荐位,别人做法是每3秒用ajax轮询服务器又假设有3层嵌套ajax,每层都要等到上一次ajax请求完成再发请求。如果碰到以上2种页面,你的应对策略是什么?
      

  2.   

    我给你的策略是: 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
    })
      

  3.   

    不考虑循环请求的情况,假定一开始就有一批ajax请求,请求完了就不会再有 
      

  4.   

    居于jquery还是什么?如果是jquery可以注册全局beforeSend 和complete 事件,jQuery.ajaxSetup放在所有jquery框架下,一个全局变量(初始0)来收集总的ajaxbeforeSend 全局变量+1,complete -1并且判断全局变量为0就说明全部请求完毕了,执行你要的代码如果不是jquery就没搞了。。只能自己查看ajax请求更新的容器,计时器定时检查容器内容是否改变,不过这个办法也不能100%检查正确,要是网络出错没跟新就没搞了
      

  5.   

    重写 window.XMLHttpRequest 进行检测
    http://www.jb51.NET/article/91419.htm