源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

提取jquery的ready()方法单独使用示例

  • 时间:2021-09-24 08:03 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:提取jquery的ready()方法单独使用示例
大家可以使用windows.onload事件,但onload在看来,就是页面上的东西(img,iframe等资源)全部都加载完毕后才能发生,如果页面内有大的图片的话,会在页面展现后好久时间后才执行。 如果只需要对DOM进行操作,那么这时就没必要等到页面全部加载了。我们需要更快的方法。Firefox有DOMContentLoaded事件可以轻松解决,可惜的就是IE没有。 MSDN关于JSCRIPT的一个方法有段不起眼的话,当页面DOM未加载完成时,调用doScroll方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了。所以 对于Mozilla & Opera 浏览器,在dom树载入后有现成的 DOMContentLoaded 事件。对于Safari 浏览器,有document.onreadystatechange事件,当该触发时,如果 document.readyState=complete时,可视为dom树已经载入。 对于ie,当在iframe内时,同样有document.onreadystatechange事件,对于ie在非iframe内时,只有不断地通过能否执行doScroll判断dom是否加载完毕。 在本例中每间隔5毫秒尝试去执行 document.documentElement.doScroll('left')。在ie8下,貌视非iframe窗口也会有document.onreadystatechange事件,另外你也可以在构建自己的框架时使用此函数。
[u]复制代码[/u] 代码如下:
(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);  }  } })();
使用方法如下:
[u]复制代码[/u] 代码如下:
ready(dosomething);//dosomething为已存在的函数 //也可以通过闭包来使用 ready(function(){  //这里是逻辑代码 });
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部