页面加载过程中触发的事件

readyState 属性描述了文档的加载状态,在整个加载过程中 document.readyState会不断变化,每次变化都会触发readystatechange事件。

readyState的值变化

1.loading(加载) 文档被加载时

2.loaded (加载完毕)文档数据加载完毕

3.interactive(交互)文档结束加载并且被解析,可以操作对象,但部分资源还没有加载完成;如图像,样式表和框架之类的子资源仍在加载

4.complete(完成) 全部资源已经加载完成。状态表示window的load 事件即将被触发。

 

执行顺序:

  1. 页面加载开始,首先肯定是先发出加载资源的请求,加载未完成之前,不触发任何事件。
  2. document加载结束并解析,此时css等其他资源未加载完成。

    此时readyState为'interactive',表明document已经load并解析完成,触发 readystatechange,然后触发DOMContentLoaded(在大多数浏览器上的表现如此)。此时,加载完成且带有defer标记的脚本,会按顺序开始执行。

  3. css、img等子资源加载完成之后

    此时触发window.load事件
  4. 点击关闭标签或者刷新时,会依次触发beforeunload、unload事件。

           
             document.onreadystatechange = function(){
                console.log(document.readyState);//描述文档被加载的状态
            }
            window.addEventListener('load',function(){
                console.log('window 所有资源加载完成');
            })
            document.addEventListener('DOMContentLoaded',function(){
                console.log('当初始html文档完全加载');
            })
    
    
     interactive
     当初始html文档完全加载
     complete
     window 所有资源加载完成

    交互阶段可能会早于也可能会晚于完成阶段出现;如当加载的外部资源较多时,交互阶段很可能会早于完成阶段。所以判断事件执行条件时要可以这样判断来取得先机

     document.onreadystatechange = function(){
            if(document.readyState=='interactive'||document.readyState=='complete')
            ..........
        }

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值