当前位置:  编程技术>jquery

jquery的$(document).ready()与onload的加载顺序分析

    来源: 互联网  发布时间:2014-09-03

    本文导语:  在改一个嵌入在frame中的页面时,用到了jquery做效果,而页面本身也绑定了onload事件。 修改后,Firefox下测试正常流畅,IE下则要等个十几秒,jquery的效果才出现,我晕,是什么问题呢?! 起初以为是和本身onload加载的方法冲突...

在改一个嵌入在frame中的页面时,用到了jquery做效果,而页面本身也绑定了onload事件。
修改后,Firefox下测试正常流畅,IE下则要等个十几秒,jquery的效果才出现,我晕,是什么问题呢?!

起初以为是和本身onload加载的方法冲突。
网上的说法是$(document).ready()是在页面DOM解析完成后执行,而onload事件是在所有资源都准备完成之后才执行,也就是说$(document).ready()是要在onload之前执行的,尤其当页面图片较大较多的时候,这个时间差可能更大。
可是我这页面分明是图片都显示出来十几秒了,还不见jquery的效果出来。

删了onload加载的方法试试,结果还是一样,看来没有必要把原本的onload事件绑定也改用$(document).ready()来写。
什么原因使得Firefox正常而IE就能呢?接着调试,发现IE下原来绑定的onload方法竟然先于$(document).ready()的内容执行,而Firefox则是先执行$(document).ready()的内容,再执行原来的onload方法。

看下jquery源码中$(document).ready()的实现:
 

代码示例:
if ( jQuery.browser.msie && window == top ) (function(){
if (jQuery.isReady) return;
try {
document.documentElement.doScroll("left");
} catch( error ) {
      setTimeout( arguments.callee, 0 );
       return;
    }
   // and execute any waiting functions
   jQuery.ready();
})();
jQuery.event.add( window, "load", jQuery.ready );

可以看出,IE只有在页面不是嵌入frame中的情况下才和Firefox等一样,先执行$(document).ready()的内容,再执行原来的onload方法。
对于嵌入frame中的页面,也只是绑定在load事件上执行,所以自然是在原来的onload绑定的方法执行之后才轮到。
而这个页面中正好在测试环境下有一个访问不到的资源,那十几秒的延迟正是它放大出的时间差。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • struts+spring+hibernate+jquery实现分页功能的几个基本类介绍(异步加载)
  • jQuery预加载插件 jQuery-preloader
  • jQuery数据延迟加载插件 DataLazyLoad
  • jQuery 页面加载 fakeLoader.js
  • jQuery页面加载完毕再执行代码多种方法
  • Jquery图片延迟加载插件jquery.lazyload.js的使用方法
  • jQuery 加载器插件 ClassyLoader
  • jQuery 图像延迟加载插件 BttrLazyLoading
  • jQuery 视频延迟加载插件 lazyYT.js
  • JQuery在页面加载完成时执行函数的示例代码
  • jQuery 图像加载插件 ChickenDinner.js
  • jQuery图片加载插件 QueryLoader
  • Jquery在指定DIV加载HTML示例代码
  • jquery为动态加载的元素绑定事件的代码
  • jquery实现在页面加载完毕后获取图片高度或宽度
  • jquery跟js初始化加载的多种方法及区别介绍
  • Jquery图片加载插件 imagesloaded
  • jquery代码-如何检查图像是否已完全加载
  • 在页面加载完成后通过jquery给多个span赋值
  • 使用jQuery动态加载js脚本文件的方法
  • jquery Ajax 实现加载数据前动画效果的示例代码
  • 通过javascript库JQuery实现页面跳转功能代码
  • jQuery鼠标动画插件 jquery-ahover
  • jQuery概述,代码举例及最新版下载
  • jQuery向导插件 Jquery Wizard Plugin
  • Jquery操作html复选框checkbox:全选,全不选和反选
  • jQuery圆角插件 jQuery Corners
  • jQuery相册插件 jQuery.popeye
  • jQuery UI组件 jQuery UI
  • jQuery右键菜单插件 jQuery ContextMenu
  • jQuery分页插件 Pagination jQuery Plugin


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3