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 }