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 }