1 function domReady(f) { 2 if (domReady.done) { //如果已经加载完成 马上执行函数 3 return f(); 4 } 5 if (domReady.timer) { //如果我们已经增加了一个函数 6 domReady.ready.push(f);//把它加入待执行函数清单中 7 } else { 8 addEvent(window, 'load', isDOMReady);//添加事件监听 9 }10 11 domReady.ready = [f];//初始化待执行函数的数组12 domReady.timer = setInterval(isDOMReady, 13);//尽可能快地检查DOM是否可用13 }14 function isDOMReady() { //检查DOM是否已可操作15 if (domReady.done) { //如果我们能判断出DOM已可用,忽略16 return false;17 }18 //检查若干函数和元素是否可用19 if (document&&document.getElementsByTagName&&document.getElementById&&document.body) {20 clearInterval(domReady.timer);//如果可用则停止检查21 domReady.timer = null;22 //执行正在等待的函数23 for (var i = 0; i < domReady.ready.length; i++) {24 domReady.ready[i]();25 }26 //记录我们在此已经完成27 domReady.ready = null;28 domReady.done = true;29 }30 }