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();
}
}
}
}
2016-09-23
沒有執行啊 ?只是將function賦給init了 ?然后在其他地方調用啊 ?比如 init();
2016-01-12
2中函數定義方式都是可以的