js监听DOM元素加载的优化与解析

js监听DOM元素加载的优化与解析

步骤1:

		//onload会等到dom元素和相关资源加载完毕才会执行
		window.onload = function(ev){
			var demo = document.querySelectorAll("div");
			console.log(1);
			console.log(demo);
		}
		// 通过事件监听执行
		// DOMContentLoaded事件只会等到dom元素加载完毕就会执行
		document.addEventListener("DOMContentLoaded", function(){
				var demo = document.querySelectorAll("div");
				console.log(2);
			 	console.log(demo);
		})

打印结果2在前,说明DOMContentLoaded事件比onload快,但是addEventListener不支持ie9以下浏览器,所以为了兼容性可以使用

步骤2:
高级浏览器中不适用attachEvent

			//通过onreadystatechange专门用于监听document.readyState属性的改变的
			//document.readyState属性返回当前文档的状态(有如下几个状态):
			/* uninitialized - 还未开始载入
			   loading - 载入中
			   interactive - 已加载,文档与用户可以开始交互
			   complete - 载入完成 */
			document.attachEvent("onreadystatechange", function(){
				if(document.readyState == "complete"){
					console.log("3");
				}
			})

综合得到自己封装的类似jquery中的ready方法:

		ready: function(fn){
			//监听DOM元素是否加载完毕
			if(document.readyState == "complete"){
				fn();
			}
			else if(document.addEventListener){
				document.addEventListener("DOMContentLoaded", function(){
						fn();
				});
			}
			else {
				document.attachEvent("onreadystatechange", function(){
					if(document.readyState == "complete"){
						fn();
					}
				});
			}
		}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛仔不当马仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值