load和DOMContentLoaded的作用就是当页面加载完成的时候自动执行,但他们执行的时间点是不一样的。

DOM文档加载步骤:

(1)解析html结构

(2)加载外部脚本和样式表文件

(3)解析并执行脚本代码

(4)构造HTML DOM模型   //DOMContentLoaded执行点

(5)加载图片等外部文件

(6)页面加载完毕  //load

从上面这个流程,我们就能很清晰的看到load和DOMContentLoaded的不同,load是在第六步完成之后执行,而DOMContentLoaded是在第四步完成之后执行。很明显DOMContentLoaded的执行是在load之前的,下面是一个实例:

  window.addEventListener("load", function () {   //添加load事件
console.log("load执行");
}, false);
window.addEventListener("DOMContentLoaded", function () { //添加DOMContentLoaded事件
console.log("domContentLoad执行");
}, false)

结果:DOMContentLoaded先执行,而load后执行

jQuery有3种针对文档加载的方法:

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

load是在第六步完成之后执行,而ready是在第四步完成之后执行

总结:DOMContentLoaded比load更符合用户体验,因为load还要等其他外部资源(图片之类的)加载完才能执行,而这些资源并不会影响到dom结构,所以我们大部分情况下都可以在dom加载第四步就执行我们的JavaScrip代码,也就是使用DOMContentLoaded。

ps: 低版本的ie可以使用onreadystatechange事件,当document.readyState == "complete"时执行对应的代码,这个事件不太可靠,比如当页面中存在图片的时候,可能反而在 onload 事件之后才能触发,换言之,它只能正确地执行于页面不包含二进制资源或非常少或者被缓存时作为一个备选吧。

document.attachEvent("onreadystatechange", doSomething)  //当页面加载状态改变的时候执行这个方法. 
function doSomething()
{
if(document.readyState == "complete"){ //当页面加载状态为完全结束时进入
//你要做的操作。
}
}

load和DOMContenLoaded的区别的更多相关文章

  1. Objective C类方法load和initialize的区别

    Objective C类方法load和initialize的区别   过去两个星期里,为了完成一个工作,接触到了NSObject中非常特别的两个类方法(Class Method).它们的特别之处,在于 ...

  2. iOS load和initialize的区别

    可能有些还不清楚load和initialize的区别,下面简单说一下: 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我 ...

  3. Hibernate 中 load() 和 get() 的区别

    get 和 load 方式都是是根据 id 取得一个记录.下边详细说一下 get 和 load 的不同,因为有些时候为了对比也会把 find 加进来. 1.从返回结果上对比: load 方式检索不到的 ...

  4. 类方法load和initialize的区别

    1.+load方法当类或分类添加到object-c runtime时被调用,子类的+load方法会在它所有父类的+load方法之后执行,而分类的+load方法会在它的主类的+load方法之后执行.但不 ...

  5. json.dumps 和 json.dump的区别,load和loads的区别

    json.dumps 和 json.dump的区别,load和loads的区别

  6. docker save load export import的区别

    export export命令用于持久化容器(不是镜像).所以,我们就需要通过以下方法得到容器ID: sudo docker ps -a 接着执行导出: sudo docker export < ...

  7. jquery的load和get的区别

    jquery的load把返回的数据放到指定的元素中,不是全局函数:jquery的get把返回的数据交给用户处理,是全局函数. load和get同样是jquery的ajax函数,load的实现,几乎等于 ...

  8. IOS杂笔- 7(类方法load与initialize的区别 浅析)

    在介绍两种类方法之前,NSObject Class Reference里对这两个方法说明: +(void)initialize The runtime sends initialize to each ...

  9. hibernate的get、load的方法的区别,IllegalArgument异常

    关于hibernate中的load,get,以及延迟加载问题 今天在使用hibernate时,发现一异常: could not initialize proxy - no Session 查询资料之后 ...

随机推荐

  1. python爬去电影天堂恐怖片+游戏

    1.爬去方式python+selenium 2.工作流程 selenium自动输入,自动爬取,建立文件夹,存入磁力链接到记事本 3.贴上代码 #!/usr/bin/Python# -*- coding ...

  2. Python-String字符串的相关方法

  3. HMM Viterbi算法 详解

    HMM:隐式马尔可夫链   HMM的典型介绍就是这个模型是一个五元组: 观测序列(observations):实际观测到的现象序列 隐含状态(states):所有的可能的隐含状态 初始概率(start ...

  4. UWP 手绘视频创作工具技术分享系列 - Ink & Surface Dial

    本篇作为技术分享系列的第四篇,详细讲一下手绘视频中 Surface Pen 和 Surface Dial 的使用场景. 先放一张微软官方商城的图,Surface 的使用中结合了 Surface Pen ...

  5. python的sorted函数

    sorted很简单,没太多好写的 ,只是给自己做个笔记. sorted接受三个参数,返回一个排序之后的list. 第一个接受一个可迭代的对象(因为sorted实现了迭代协议,所以接受的参数不一定需要l ...

  6. Java学习笔记11(面向对象四:多态)

    多态: 举例:描述一个事物的多种形态,如Student类继承了Person类,一个Student对象既是Student,又是Person 多态体现为:父类引用变量可以指向子类对象 多态的前提:必须有子 ...

  7. Spring Boot快速入门(三):依赖注入

    原文地址:https://lierabbit.cn/articles/6 spring boot使用依赖注入的方式很简单,只需要给添加相应的注解即可 @Service用于标注业务层组件 @Contro ...

  8. Echars 6大公共组件详解

    Echars 六大组件详解 : title  tooltip toolbox legend  dataZoom visualMap 一.title标题详解 myTitleStyle = { color ...

  9. 【括号问题】$("li:lt(" + (idx + 1) + ")") 手风琴效果注意事项

    $("li:lt(" + (idx + 1) + ")").each(function(i){ 注意,这里必须要加括号,是因为如果不加,idx与前面  &quo ...

  10. 【转】qlv文件如何转换成mp4 怎样把下载好的qlv格式视频转换成MP4格式

    狸窝  复制  收藏  保存到桌面  快速找教程方案  反馈需求  社会主义核心价值观  客服QQ41442901   马上注册 升级VIP   对于视频文件之间的转换问题,我也已经是无力吐槽了,每个 ...