大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

艺术单独采纳示例,ready更加快的不二等秘书诀

来源:http://www.dfwstonefabricators.com 作者:关于计算机 人气:134 发布时间:2019-09-19
摘要:其一是上次在搜狐寓指标一篇文章,经测量试验,确实比jquery的$(document).ready(function(){....})更加快,何况在ie和火狐等主流浏览器上都没难点, 世家可以应用windows.onload事件,但onload在看

其一是上次在搜狐寓指标一篇文章,经测量试验,确实比jquery的$(document).ready(function(){....})更加快,何况在ie和火狐等主流浏览器上都没难点,

世家可以应用windows.onload事件,但onload在看来,便是页面上的事物(img,iframe等财富)全部都加载实现后技艺生出,要是页面内有大的图形的话,会在页面表现后长期时间后才实行。

忘了原创是何人了,借使主人看到能够沟通小编, 笔者会立即加上原作出处的,敬请谅解。

假如只须要对DOM实行操作,那么此时就没须要等到页面全部加载了。我们供给更加快的主意。Firefox有DOMContentLoaded事件能够轻巧化解,可惜的正是IE未有。

复制代码 代码如下:

MSDN关于JSC奥德赛IPT的三个方法有段不起眼的话,当页面DOM未加载成功时,调用doScroll方法时,会发生十一分。那么大家掉转用,假诺不十分,那么正是页面DOM加载达成了。所以 对于Mozilla & Opera 浏览器,在dom树载入后有现有的 DOMContentLoaded 事件。对于Safari 浏览器,有document.onreadystatechange事件,当该触发时,假如document.readyState=complete时,可身为dom树已经载入。

var jb51 =new function() {
dom = [];
dom.isReady = false;
dom.isFunction = function(obj) {
return Object.prototype.toString.call(obj) === "[object Function]";
}
dom.Ready = function(fn) {
dom.initReady();
//如果未有建成DOM树,则走第二步,存款和储蓄起来共同杀
if (dom.isFunction(fn)) {
if (dom.isReady) {
fn();
//如若已经济建设成DOM,则来三个杀贰个
} else {
dom.push(fn);
//存款和储蓄加载事件
}
}
}
dom.fireReady = function() {
if (dom.isReady) return;
dom.isReady = true;
for (var i = 0, n = dom.length; i < n; i++) {
var fn = dom[i];
fn();
}
dom.length = 0;
//清空事件
}
dom.initReady = function() {
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded",
function() {
document.removeEventListener("DOMContentLoaded", arguments.callee, false);
//清除加载函数
dom.fireReady();
},
false);
} else {
if (document.getElementById) {
document.write("<script id="ie-domReady" defer='defer'src="//:"></script>");
document.getElementById("ie-domReady").onreadystatechange = function() {
if (this.readyState === "complete") {
dom.fireReady();
this.onreadystatechange = null;
this.parentNode.removeChild(this)
}
};
}
}
}
}

对于ie,当在iframe内时,一样有document.onreadystatechange事件,对于ie在非iframe内时,只偶然时随地地因此能或不能进行doScroll剖断dom是不是加载达成。

您大概感兴趣的稿子:

  • jquery中的$(document).ready()使用小结
  • Jquery中"$(document).ready(function(){ })"函数的运用详解
  • JQuery的ready函数与JS的onload的区分详解
  • 依傍jQuery中的ready方法及贯彻按需加载css,js实例代码
  • jquery ready函数、css函数及text()使用示例
  • jquery ready(fn)事件采用介绍
  • JQuery onload、ready概念介绍及利用方法
  • jQuery之$(document).ready()使用介绍
  • jQuery 源码深入分析笔记(4) Ready函数
  • jQuery ready函数滥用解析
  • Jquery知识点一 Jquery的ready和Dom的onload的界别
  • jquery ready()的二种落成方式小结
  • jquery的$(document).ready()和onload的加载顺序
  • JQuery中的ready函数争执的缓慢解决方式
  • JQuery 引发四遍$(document.ready)事件
  • jquery $(document).ready() 与window.onload的区别
  • JQuery下关于$.Ready()的分析
  • 领到jquery的ready()方法单独行使示例

在本例中每间隔5皮秒尝试去执行document.documentElement.doScroll('left')。在ie8下,貌视非iframe窗口也可以有document.onreadystatechange事件,另外你也得以在营造筑协会调的框架时使用此函数。

复制代码 代码如下:

(function(){
 var isReady=false; //决断onDOMReady方法是或不是业已被试行过
 var readyList= [];//把供给试行的点子先暂存在这几个数组里
 var timer;//沙漏句柄

 ready=function(fn)
 {
  if (isReady )
   fn.call( document);
  else
   readyList.push( function() { return fn.call(this);});
  return this;
 }
 var onDOMReady=function(){
  for(var i=0;i< readyList.length;i++)
  {
   readyList[i].apply(document);
  }
  readyList = null;
 }
 var bindReady = function(evt)
 {
  if(isReady) return;
  isReady=true;
  onDOMReady.call(window);
  if(document.removeEventListener)
  {
   document.removeEventListener("DOMContentLoaded", bindReady, false);
  }
  else if(document.attachEvent)
  {
   document.detachEvent("onreadystatechange", bindReady);
   if(window == window.top){
    clearInterval(timer);
    timer = null;
   }
  }
 };
 if(document.addEventListener){
  document.addEventListener("DOMContentLoaded", bindReady, false);
 }
 else if(document.attachEvent)
 {
  document.attachEvent("onreadystatechange", function(){
   if((/loaded|complete/).test(document.readyState))
   bindReady();
  });
 if(window == window.top)
 {
  timer = setInterval(function(){
   try
   {
    isReady||document.documentElement.doScroll('left');//在IE下用能不可能举办doScroll推断dom是还是不是加载达成
   }
   catch(e)
   {
    return;
   }
   bindReady();
  },5);
 }
 }
})();

利用办法如下:

复制代码 代码如下:

ready(dosomething);//dosomething为已存在的函数
//也足以透过闭包来行使
ready(function(){
 //这里是逻辑代码
});

你恐怕感兴趣的文章:

  • jquery事件的ready()方法应用详解
  • JavaScript的jQuery库中ready方法的上学课程
  • jquery $(document).ready()和window.onload的分别浅析
  • jQuery中ready事件用法实例
  • jQuery的ready方法详解
  • jquery中的$(document).ready()使用小结
  • Jquery中"$(document).ready(function(){ })"函数的选拔详解
  • JQuery的ready函数与JS的onload的分别详解
  • jquery ready(fn)事件采用介绍
  • 长远拆解分析jQuery的ready函数是怎么办事的(职业原理)

本文由大发体育娱乐在线发布于关于计算机,转载请注明出处:艺术单独采纳示例,ready更加快的不二等秘书诀

关键词:

最火资讯