- 方案一:不能带参数,但可以多次调用。
(function() { var ie = !!(window.attachEvent && !window.opera); var wk = /webkit\/(\d+)/i.test(navigator.userAgent) && (RegExp.$1 < 525); var fn = []; var run = function () { for (var i = 0; i < fn.length; i++) fn[i](); }; var d = document; d.ready = function (f){ if (!ie && !wk && d.addEventListener) return d.addEventListener('DOMContentLoaded', f, false); if (fn.push(f) > 1) return; if (ie) (function (){ try { d.documentElement.doScroll('left'); run(); } catch (err) { setTimeout(arguments.callee, 0); } })(); else if (wk) var t = setInterval(function () { if (/^(loaded|complete)$/.test(d.readyState)) clearInterval(t), run(); }, 0); }; })();
- 方案二:能带参数,但好像不支持多次调用。
~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 event if (D.addEventListener) { // Use the handy event callback D.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 iframes D.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 ready if (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; } })(); } }; }();
- 方案三:放在页面的最后。
- 方案四:window.onload
此方法是页面所有的资源包括图片等加载完成后才会执行,因此不推荐使用。
JS 实现页面加载完成判断
最新推荐文章于 2022-06-30 07:44:59 发布