jQuery源码学习 之 ready与load事件 ---- day4

jQuery中ready与load事件

1. jQuery中有3种针对文档加载的方法

$(document).ready(function() {
    // ...code...
});
// document ready简写
$(function() {
    // ...code...
});
$(document).load(function() {
    // ...code...
});

2. ready和load的区别

二者的区别是:ready先于load执行。这里我们要理解DOM文档的加载顺序:

(1)解析HTML结构;
(2)加载外部脚本和样式表文件;
(3)解析并执行脚本代码;
(4)构造HTML DOM模型; // ready
(5)加载图片等外部文件;
(6)页面加载完毕。// load
从上面的步骤,我们应该已经理解了,ready在第(4)步完成之后就执行了,但是,load要在第(6)步完成之后才执行。

3. 结论

ready与load工区别就在于资源文件的加载,ready构建了基本的DOM结构,所以对于代码来说应该越快加载越好。在一个高速浏览的时代,没人愿意等待答案。假如一个网站页面加载超过4s,那你将面临1/4用户的流失,所以对于框架来说,用户体验是至关重要的,我们应该越早处理DOM越好,不需要等到图片资源都加载后才去处理框架的加载,图片资源过多load事件就会迟迟不会触发。

4. jQuery中的ready实现

jQuery.ready.promise = function(obj) {
    if(!readyList) {
        readyList = jQuery.Deferred();
        if(document.readyState === 'complete') {
            setTimeout(jQuery.ready);
        } else {
            document.addEventListener("DOMContentLoaded", completed, false);
            window.addEventListener("load", completed, false);
        }
    }
    return readyList.promise(obj);
};
jQuery的ready是通过promise给包装过的,这也是jQuery擅长的手法,统一了回调系统。可见,jQuery兼容的具体策略:针对高级的浏览器,当前很乐意使用DOMContentLoaded事件,省时省力。

IE的处理方法:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值