var 声明一个匿名函数init(),为什么会自己运行?把它写成function init(){} 就正常了
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();
}
}
}
}