DOM----编写自己的domready(类似于jQuery的$(document).ready(fn))

前两天学习dom,感触颇深,感觉以前对dom树的理解很浅,看到domready的知识,分享下实现的代码:

function myready(fn){

if(document.addEventListener){//检测浏览器是否支持w3c标准的DOMContentLoaded事件

document.addEventListener("DOMContentLoaded",fn,false);

}else{

IEContentLoaded(fn);//模拟不支持w3c标准的DOMContentLoaded事件的处理情况

}

/* IE低版本模拟DOMContentLoaded */

function IEContentLoaded(){

//确保用户的回调函数只执行一次

var flag=false;

function init(){

if(!flag){

fn();

flag=true;

}

}

var d=window.document;

/* 监听document的加载状态 */

!function(){

try{

d.documentElement.doScroll("left");/* 伟大的hack:dom树未创建之前调用doScroll会抛出错误 */

}catch(e){

setTimeout(arguments.callee,50);

return;

}

init();

}();

/*如果document加载完成,可以立即执行用户函数*/

d.onreadystatechange=function(){

if(d.readyState=="complete"){

d.onreadystatechange=null;

init();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值