html5 保存页面状态,Web前端基础篇-HTML-02-HTML的生命周期

从大前端的角度来讲每个页面都有生命周期,iOS有view生命周期,web页面同样也有生命周期;

so, 问题来啦,web生命周期我们怎么监测呢?

答:生命周期会固定执行某一些方法(函数),我们只要监听函数就可以啦

e0e9a5e42d48

tmpdir__17_9_7_15_04_07.jpg

生命周期执行函数顺序:

1、DOMContentLoaded-页面开始加载

2、load-页面完全加载

3、beforeunload-页面离开前

4、unload-页面完成离开

同时您可以直接监听readystatechange -监听页面加载的状况

1、DOMContentLoaded-页面开始加载

浏览器已经完全加载了HTML、DOM树已经构建完毕, 但是像是图片、资源和样式表等外部资源可能并没有下载完毕

math?formula=%5Ccolor%7Bred%7D%7BDOM%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%AF%95%EF%BC%8C%E6%89%80%E4%BB%A5js%E5%8F%AF%E4%BB%A5%E8%AE%BF%E9%97%AE%E6%89%80%E6%9C%89DOM%E8%8A%82%E7%82%B9%EF%BC%8C%E5%88%9D%E5%A7%8B%E5%8C%96%E7%95%8C%E9%9D%A2%7D

DOMContentLoaded注意事项:

A. HTML页面时遇到了js标签,将无法继续构建DOM树。 UI渲染线程与JS引擎是互斥的,当JS引擎执行时UI线程会被挂起,必须立即执行脚本

B. HTML页面时遇到了外部脚本js,也会暂停DOM树构建,所以 DOMContentLoaded 也会等待外部脚本;

C.因此为了不阻塞DOM树的构建和页面的渲染,

math?formula=%5Ccolor%7Bred%7D%7B%E6%89%80%E4%BB%A5%E5%BC%95%E5%85%A5async%E5%92%8Cdefer%7D

2、load-页面完全加载

浏览器已经加载了所有的资源(图像,样式表等)

math?formula=%5Ccolor%7Bred%7D%7B%E9%99%84%E5%8A%A0%E8%B5%84%E6%BA%90%E5%B7%B2%E7%BB%8F%E5%8A%A0%E8%BD%BD%E5%AE%8C%E6%AF%95%EF%BC%8C%E5%8F%AF%E4%BB%A5%E5%9C%A8%E6%AD%A4%E4%BA%8B%E4%BB%B6%E8%A7%A6%E5%8F%91%E6%97%B6%E8%8E%B7%E5%BE%97%E5%9B%BE%E5%83%8F%E7%9A%84%E5%A4%A7%E5%B0%8F%7D

3、beforeunload-页面离开前

如果用户即将离开页面或者关闭窗口时,可以询问用户是否保存了更改以及是否确定要离开页面

4、unload-页面完成离开

用户离开页面的时候,window对象上的unload事件会被触发, 我们可以做一些不存在延迟的事情,比如关闭弹出的窗口,可是我们无法阻止用户转移到另一个页面上

5、额外可以监听readystatechange:监听页面加载的状况

A.loading 加载中

B.interactive 互动 - 文档已经完成加载,文档已被解析,但是诸如图像,样式表和框架之类的子资源仍在加载

C.complete - 文档和所有子资源已完成加载。状态表示 load 事件即将被触发

监听方法

document.addEventListener('DOMContentLoaded', function () {

console.log('页面开始加载------DOMContentLoaded');

});

window.onload = function() {

console.log('页面完全加载------onload');

this.getWindowWidthHeight();

};

window.onbeforeunload = ()=>{

console.log('页面离开前------onbeforeunload');

};

window.onunload = ()=>{

console.log('页面完成离开------onunload');

};

document.addEventListener('readystatechange', function () {

console.log('页面当前状态-----readyState=',document.readyState);

});

结果:

页面开始加载------DOMContentLoaded

页面当前状态-----readyState= complete

页面完全加载------onload

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值