当前位置:主页 > jquery教程 > 提取jquery的ready()方法单独使用示例

实例分享提取jquery的ready()方法

发布:2020-02-26 17:16:58 86


给大家整理了jquery相关的编程文章,网友梁修远根据主题投稿了本篇教程内容,涉及到jquery、ready()、提取jquery的ready()方法单独使用示例相关内容,已被284网友关注,内容中涉及的知识点可以在下方直接下载获取。

提取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事件,另外你也可以在构建自己的框架时使用此函数。

 

 

(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基本过滤选择器

    发布:2020-02-10

    本篇文章主要是对jquery选择器之基本过滤选择器进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助


  • jquery实现在光标位置插入内容的方法

    发布:2022-04-05

    这篇文章主要介绍了jquery实现在光标位置插入内容的方法,涉及jQuery功能的扩展技巧,具有一定参考借鉴价值,需要的朋友可以参考下


  • jQuery选择器知识点分享

    发布:2020-03-27

    本篇文章主要是对jQuery选择器进行了全面的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助


  • jQuery进行组件开发代码实例

    发布:2020-05-25

    这篇文章主要介绍了jQuery进行组件开发的方法,以完整实例形式分析了基于jQuery实现自定义组件的相关技巧,代码备有详尽的注释便于理解,需要的朋友可以参考下


  • jQuery如何实现倒计时功能

    发布:2020-02-22

    本文通过html代码和js代码给大家介绍了实现倒计时天,时,分,秒功能,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧


  • jQuery实现弹出带遮罩层并居中浮动窗口的实例

    发布:2019-12-05

    这篇文章主要介绍了jQuery实现弹出带遮罩层的居中浮动窗口效果,涉及jQuery针对页面元素的运算与样式的动态修改相关技巧,需要的朋友可以参考下


  • 实例详解jQuery和HTML5实现WebGL高性能烟花绽放动画效果

    发布:2020-03-16

    这篇文章主要介绍了jQuery+HTML5实现WebGL高性能烟花绽放动画效果,可实现烟花升空爆炸的绚丽动画效果,并附带demo源码供读者下载参考,需要的朋友可以参考下


  • 详解jQuery offsetParent()方法

    发布:2020-01-27

    这篇文章主要介绍了jQuery中offsetParent()方法用法,实例分析了offsetParent()方法的功能、定义及返回匹配元素所有祖先元素中第一个采用定位的祖先元素时的使用技巧,需要的朋友可以参考下


网友讨论