JS 实现页面加载完成判断

来源:互联网 发布:淘宝裂变吸粉 编辑:程序博客网 时间:2024/05/19 05:38

  1. 方案一:不能带参数,但可以多次调用。
    (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);};})();
  2. 方案二:能带参数,但好像不支持多次调用。
    ~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;}})();}};}();
  3. 方案三:放在页面的最后。
  4. 方案四:window.onload
    此方法是页面所有的资源包括图片等加载完成后才会执行,因此不推荐使用。