前两天学习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();
}
}
}
}