javascript的domReady-类$(document).ready(function()使用方法
1 new function(){ 2 dom = []; 3 dom.isReady = false; 4 dom.isFunction = function(obj){ 5 return Object.prototype.toString.call(obj) === "[object Function]"; 6 } 7 dom.Ready = function(fn){ 8 dom.initReady();//如果没有建成DOM树,则走第二步,存储起来一起杀 9 if(dom.isFunction(fn)){ 10 if(dom.isReady){ 11 fn();//如果已经建成DOM,则来一个杀一个 12 }else{ 13 dom.push(fn);//存储加载事件 14 } 15 } 16 } 17 dom.fireReady =function(){ 18 if (dom.isReady) return; 19 dom.isReady = true; 20 for(var i=0,n=dom.length;i<n;i++){ 21 var fn = dom[i]; 22 fn(); 23 } 24 dom.length = 0;//清空事件 25 } 26 dom.initReady = function(){ 27 if (document.addEventListener) { 28 document.addEventListener( "DOMContentLoaded", function(){ 29 document.removeEventListener( "DOMContentLoaded", arguments.callee, false );//清除加载函数 30 dom.fireReady(); 31 }, false ); 32 }else{ 33 if (document.getElementById) { 34 document.write("<script id=\"ie-domReady\" defer='defer'src=\"//:\"><\/script>"); 35 document.getElementById("ie-domReady").onreadystatechange = function() { 36 if (this.readyState === "complete") { 37 dom.fireReady(); 38 this.onreadystatechange = null; 39 this.parentNode.removeChild(this) 40 } 41 }; 42 } 43 } 44 } 45 }
使用方法:
1 dom.Ready(function(){ 2 alert("我的domReady!") 3 }); 4 dom.Ready(function(){ 5 alert("我的domReady测试多重加载1!") 6 }); 7 dom.Ready(function(){ 8 alert("我的domReady测试多重加载2!") 9 }); 10 dom.Ready(function(){ 11 alert(document.getElementById("test").innerHTML) 12 });