方案二:能带参数,但好像不支持多次调用。
~function(){var FNArray=[];var D = document;window.onReady = function(fallBackFunction){var argu=[];for (var i=1,len=arguments.length; i<len; i++){argu.push(arguments[i]);}var is_ie = !!(window.attachEvent && !window.opera);if (window.readyBound) return fallBackFunction.apply(this,argu);if(!is_ie) return fallBackFunction.apply(this,argu);FNArray.push(fallBackFunction);readyBound = true;var ready = 0;// Mozilla, Opera and webkit nightlies currently support this eventif (D.addEventListener){// Use the handy event callbackD.addEventListener("DOMContentLoaded",function(){D.removeEventListener("DOMContentLoaded", arguments.callee, false);if (ready) return;ready = 1;for (var i=0,len=FNArray.length; i<len; i++){FNArray[i] ? FNArray[i].apply(this,argu) : 0;}},false);// If IE event model is used}else if (D.attachEvent){// ensure firing before onload,// maybe late but safe also for iframesD.attachEvent("onreadystatechange",function(){if (D.readyState === "complete"){D.detachEvent("onreadystatechange", arguments.callee);if (ready) return;ready = 1;for (var i=0,len=FNArray.length; i<len; i++){FNArray[i] ? FNArray[i].apply(this,argu) : 0;}}});// If IE and not an iframe// continually check to see if the D is readyif (D.documentElement.doScroll && window == window.top)(function(){if (ready) return;try{// If IE is used, use the trick by Diego Perini// http://javascript.nwbox.com/IEContentLoaded/D.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee, 0);return;}ready = 1;for (var i=0,len=FNArray.length; i<len; i++){FNArray[i] ? FNArray[i].apply(this,argu) : 0;}})();}};}();