qq_科比王_0
2016-01-12 08:53
function myReady(fn){
//当代标准浏览器,DOMContentLoaded使用事件绑定addEventListener
if(document.addEventListener){
document.addEventListener("DOMContentLoaded", fn, false);
}else{
//IE低版本
contentLoaded(fn);
}
//IE 中模拟DOMContentLoaded
function contentLoaded(fn){
var d = window.document;
var done = false;
//只执行一次用户的回调函数;
function init(){
if(!done){
done = true;
fn();
}
}
//为什么这样写,init函数会执行?
/*var init1 = function(){
if(!done){
done = true;
fn();
}
}*/
(function(){
try{
//dom树未创建完执行doScroll会抛出错误;
d.documentElement.doScroll("left");
}catch(e){
//延迟再执行一次,直到没有错误为止;
setTimeout(arguments.callee,50);
return;
}
//如果没有错误了就立马执行此函数
init();
})()
//监听document加载情况;
d.onreadystatechange = function(){
//如果用户是在domready之后绑定的函数,就立马执行;
if(d.readyState == "complete"){
d.onreadystatechange = null;
init();
}
}
}
}
没有执行啊 只是将function赋给init了 然后在其他地方调用啊 比如 init();
2中函数定义方式都是可以的
DOM探索之基础详解篇
98372 学习 · 238 问题
相似问题