jquery源码解析之ready与load事件
来源:互联网 发布:淘宝的生意参谋是什么 编辑:程序博客网 时间:2024/06/05 08:47
1.DOM加载的步骤
网页渲染的过程主要分为以下几步:1.解析HTML结构;2.加载外部脚本和样式表文件3.解析并执行脚本代码;4.构造HTML DOM模型;5加载图片等外部文件;6.页面加载完毕。ready主要是在第4步完成之后执行的,load要在第6步完成之后执行。所以是ready先执行load后执行。
2.jQuery中ready事件
ready: function( fn ) { // 添加回调函数 jQuery.ready.promise().done( fn ); return this;}jQuery.ready.promise = function( obj ) { if ( !readyList ) { readyList = jQuery.Deferred(); //判断页面是否已经全部加载完成,直接调用ready方法 if ( document.readyState === "complete" ) { // Handle it asynchronously to allow scripts the opportunity to delay ready setTimeout( jQuery.ready, 1 ); // 标准浏览器支持DOMContentLoaded } else if ( document.addEventListener ) { // 监听DOM是否已经加载完成 document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false ); // A fallback to window.onload, that will always work window.addEventListener( "load", jQuery.ready, false ); // If IE event model is used } else { // 针对于低版本的IE浏览器 document.attachEvent( "onreadystatechange", DOMContentLoaded ); // A fallback to window.onload, that will always work window.attachEvent( "onload", jQuery.ready ); // If IE and not a frame // continually check to see if the document is ready var top = false; try { top = window.frameElement == null && document.documentElement; } catch(e) {} if ( top && top.doScroll ) { (function doScrollCheck() { if ( !jQuery.isReady ) { try { top.doScroll("left"); } catch(e) { return setTimeout( doScrollCheck, 50 ); } // and execute any waiting functions jQuery.ready(); } })(); } } } return readyList.promise( obj );};
0 0
- jquery源码解析之ready与load事件
- jQuery源码学习 之 ready与load事件 ---- day4
- jQuery中的ready和load事件(源码解析)
- jQuery源码之ready()事件
- jQuery中ready与load事件
- jQuery内ready与load事件的区别
- jQuery内ready与load事件的区别
- jQuery内ready与load事件的区别
- jQuery内ready与load事件的区别
- jQuery中ready与load事件的区别
- jQuery中ready与load事件的区别
- jQuery内ready与load事件的区别
- jQuery中ready与load事件的区别
- jQuery中ready与load事件的区别
- jQuery中ready与load事件的区别
- jQuery中ready与load事件的区别
- jQuery中ready与load事件的区别
- jQuery中ready与load事件的区别
- SlidingMenu侧滑
- QTableWidget与QTableView的区别
- @Controller和@RestController的区别?
- 欢迎使用CSDN-markdown编辑器
- Visual Studio常用小技巧一
- jquery源码解析之ready与load事件
- 深度学习之解读VGGNet
- maven 处理无法下载jar包方法
- Python判断两个list是否是父子集关系
- JavaWeb学习四(HttpServletResponse和HttpServletRequest)
- mysql:sql insert into * values * (插入datetime类型)
- 第二册第六单元
- 加载中页面代码
- 连接