判断页面是否加载完成

用document.onreadystatechange的方法来监听状态改变, 然后用document.readyState == “complete”判断是否加载完成 
    代码如下: 
    document.onreadystatechange = subSomething;//当页面加载状态改变的时候执行这个方法. 
    function subSomething() { 
        if(document.readyState == “complete”) //当页面加载状态 
        myform.submit(); //表单提交 
    } 
    页面加载readyState的五种状态 
    原文如下: 
    0: (Uninitialized) the send( ) method has not yet been invoked. 
    1: (Loading) the send( ) method has been invoked, request in progress. 
    2: (Loaded) the send( ) method has completed, entire response received. 
    3: (Interactive) the response is being parsed. 
    4: (Completed) the response has been parsed, is ready for harvesting. 
    翻译成中文为: 
    0 - (未初始化)还没有调用send()方法 
    1 - (载入)已调用send()方法,正在发送请求 
    2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 
    3 - (交互)正在解析响应内容 
    4 - (完成)响应内容解析完成,可以在客户端调用了 注:如果要判断子页面是否加载完成,在子页面使用该方法,在判断加载完成后,调用父页面的方法通知父页面,然后执行父页面的动作

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
    </style>
    <script>
    window.onload=function(){
         alert(document.readyState)  //Completed
    }
    document.onreadystatechange = function(){  //当页面加载状态改变的时候执行这个方法.
        alert(document.readyState)   //Interactive
        if(document.readyState == "complete")    //当dom加载完成 
        alert(document.readyState)   //Completed
    } 
     alert(document.readyState)      //Loading
    </script>
</head>
<body>   
</body>
</html>

 

对于外部资源的应用有两个我们head里面常用的标签linkscript

 

测试浏览器版本说明

  •  Opera  11.51
  •  Chrome 6.0.401.1
  •  FF 3.6.23
a.  link标签
  •  link标签的静态支持
    ------个人定义的所谓 静态其实就是
 
Js代码   收藏代码
  1. <link type="text/css" rel="stylesheet" href="****" />  
 

 

    1. IE 6/7/8/9多支持onload,

        Opera支持onload

        对于onreadystatechange事件,有两个状态readyState(loading,complete)

 

    2. FF/Safari/Chrome不支持onload,

        也不支持onreadystatechange

 

 

  • link标签的动态支持
    ------个人定义的所谓 动态是js去创建link标签
 
Js代码   收藏代码
  1. <script type="text/javascript">  
  2.    /*封装代码 
  3.    *创建给定属性的html元素 
  4.    *@param type ----创建元素的类型 
  5.    *@param attrs ----属性集合 
  6.    *@return elment -------带有给定属性的元素对象 
  7.    */  
  8.     function createTag(type,attrs){  
  9.          var element = document.createElement(type),  
  10.                item ;  
  11.          for(item in attrs){  
  12.              //加上一层本地属性的判断  
  13.              if(attrs.hasOwnProperty(item)){  
  14.                  element.setAttribute(item,attrs[item]);  
  15.             }  
  16.         }  
  17.         return element;  
  18.    }  
  19.   
  20.    var link = createTag('link',{  
  21.          type : "text/css",  
  22.          rel    : "stylesheet",  
  23.          href  : "***"  
  24.     });  
  25.    link.onreadystatechange = function(){  
  26.            //执行代码  
  27.    }  
Js代码   收藏代码
  1.    link.onload = function(){//执行代码}  
  2.    document.getElementsByTagName('head')[0].appendChild(link);  
  3. </script>  
  1.  IE 6/7/8/9支持onload和onreadystatechange
  2.  Opera也支持
  3.  FF/Chrome/Safai 不支持
 
b.  script标签
  
  •   script的静态支持
  -----所谓的静态就是
 
Js代码   收藏代码
  1. <script type="text/javascript" src="**"></script>  
 1.  IE 6/7/8触发onreadystatechange
 2.  IE 9 先触发onreadystatechange 后触发onload
 3.  FF/Safari/Chrome/Opera 触发onload
 
 
  •  script的动态支持
ie下的预加载
 
Js代码   收藏代码
  1. window.onload = function(){  
  2.       var script = document.createElement("script");  
  3.       script.setAttribute("type","text/javascript");  
  4.       script.onreadystatechange = function(){  
  5.           if(this.readyState == 'loaded'){  
  6.                    alert("preload");  
  7.                    document.getElementsByTagName("head")[0].appendChild(script);  
  8.            }else if(this.readyState == "complete"){  
  9.                this.onreadystatechange = null;  
  10.        }  
  11.      }  
  12.     script.src="****jquery.min.js?_="+(new Date()).getTime();  
  13. }  

转载于:https://my.oschina.net/u/3147332/blog/807042

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值