博客地址:https://ainyi.com/46

window.onload 事件会在页面或图像加载完成后触发(即所有元素的资源都下载完毕)
如果页面上有许多图片、音乐或 falsh 还没加载完成,onload 事件就会迟迟无法触发

所以出现了 DOM Ready 事件

熟悉 jQuery的人,都知道 DomReady 事件

$(document).ready(function(){
alert("jQuery 的 DOM 准备完毕,资源还没加载完");
})

DomReady

DomReady 事件就是在 DOM 文档结构准备完毕后触发,即在资源加载前触发

DOMContentLoaded

DOMContentLoaded 事件比 onload 事件快许多,它是在 DOM 准备完毕后触发(不需等待资源下载完毕)

DOMContentLoaded 事件在许多 Webkit 浏览器以及 IE9 上都可以使用,此事件会在 DOM 文档准备好以后触发,包含在 HTML5 标准中
对于支持此事件的浏览器,直接使用 DOMContentLoaded 事件是最简单最好的选择

IE6,7,8 都不支持 DOMContentLoaded 事件。所以目前所有的 hack 方法都是为了让 IE6,7,8支持 DOM Ready 事件

下面代码可以发现 jQuery 的 ready 事件稍微早于 DOMContentLoaded 事件,但都是实现了 domready 事件(dom 加载完毕,资源加载前触发)

document.addEventListener('DOMContentLoaded', function(){
alert("DOM准备完毕,资源还没加载完");
}, false); // jQuery 的 domready
$(document).ready(function(){
alert("jQuery 的 DOM 准备完毕,资源还没加载完");
}) // 在 document 文档加载完成后就可以对 DOM 进行操作(即所有元素的资源都下载完毕)
window.onload = function(){
alert("DOM 加载完毕,所有资源都下载完成");
} // 或者经常用到的图片,假设这个
document.getElementById("imgID").onload = function(){
alert("图片 id 为 imgID 加载完毕");
}


Dom Ready 和 Dom Load 两者的区别

1、Dom Ready 是在 dom 加载完成后就可以直接对 dom 进行操作,比如一张图片只要 img 标签完成,不用等这个图片加载完成,就可以设置图片的宽高的属性或样式等;
2、Dom Load 是在整个 document 文档(包括了加载图片等其他信息)加载完成后就可以直接对 dom 进行操作,比如加载一张图片,要等这个图标加载完成之后才能设置图片的宽高的属性或样式等;

onreadystatechange 事件

onreadystatechange 事件与 onload 一样,会在页面或图像加载完成后触发(即所有元素的资源都下载完毕),但是:

  • FireFox 的 script 元素不支持 onreadystatechange 事件,只支持 onload 事件
  • IE 的 script 元素支持 onreadystatechange 事件,不支持 onload 事件

在 IE 下,可以使用 onreadystatechange 完成 onload 事件,判断 readyState 是否等于 complete 或 loaded

document.onreadystatechange = function () {
if (document.readyState === 'complete' || document.readyState === 'loaded') {
alert('dom 和资源下载完毕')
}
}

博客地址:https://ainyi.com/46

onload 和 domready的更多相关文章

  1. DOM基础+domReady+元素节点类型判断

    DOM节点类型  nodeType element  1    Node.ELEMENT_NODE   元素节点 attr  2   Node.ATTRIBUTE_NODE  属性节点 text  3 ...

  2. javascript代码片段

    DOMReady函数,只要DOM结构加载完成即可,不必等待所有资源加载完成,节约时间,"DOMContentLoaded"在H5中被标准化 var DOMReady=functio ...

  3. 编写高质量 JavaScript -- 知识点小记

    一: 团队合作避免JS冲突 脚本中的变量随时存在冲突的风险, 1.   解决办法---用匿名函数将脚本包起来,让变量的作用域控制在匿名函数之内 如: <script type="tex ...

  4. 编写高质量代码:Web前端开发修炼之道(三)

    第五章:高质量的Javascript 这章的内容我看的最久,这是跟我js基础没打好有着莫大的关系,但是还是耐着性子看完了, 不懂的东西都是百度上搜索,理解后再继续.下面是记录下来的笔记. 1)如何避免 ...

  5. 编写高质量代码——html、css、javascript

    [编写高质量代码]1.注释的必要性:增加代码的可读性.2.web标准:由一系列的标准组合而成,其核心理念是将网页的结构.样式.行为分离,所以他可分为:结构标准.样式标准和行为标准.3.一个符合标准的网 ...

  6. OnLoad & DOMReady

    window.onload 事件会在页面或图像加载完成后立即触发(即所有元素的资源都下载完毕).如果页面上有许多图片.音乐或falsh,onload事件会迟迟无法触发.所以出现了DOM Ready事件 ...

  7. jquery如何实现domReady和onload判断的

    function ready(fn) { var completed = function() { if ( document.addEventListener ) { document.remove ...

  8. 谈谈DOMContentLoaded:Javascript中的domReady引入机制

    一.扯淡部分 回想当年,在摆脱写页面时js全靠从各种DEMO中copy出来然后东拼西凑的幽暗岁月之后,毅然决然地打算放弃这种处处“拿来主义”的不正之风,然后开启通往高大上的“前端攻城狮”的飞升之旅.想 ...

  9. domReady的实现

    我们都知道JQ的 $(document).ready(fn) 方法.可以在页面准备就绪后才执行脚本,该方法相比传统的window.onload 事件,它的优势体现于onload事件是需要等到页面中所有 ...

随机推荐

  1. mysql学习3

    1.索引 索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据.对于索引, 会保存在额外的文件中. 作用: 约束 加速查找 1.1.建立索引 a.额外的文件保存特殊的数据结构 ...

  2. 解决微信浏览器中无法一键拨号问题tel

    公众号中需要在某些页面显示手机号码,并且需要点击后拨号. 原以为 <a href="tel:10086">10086</a> 可以解决了, 没想到在微信浏览 ...

  3. 用Group by分组后,取每组的前3条记录,怎么取?

    使用子查询进行查询 SELECT * FROM home_content a WHERE ( SELECT count(id) FROM home_content WHERE class_link = ...

  4. Linux系统下如何运行.sh文件

    在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件 第一种(这种办法需要用chmod使得文件具备执行条件(x): chmod u+x datelog.sh) ...

  5. Live2D插件--漂浮的二次元小姐姐

    这个插件找了很久,都没找到,今天偶然翻到一个小哥的博客发现了这个,果断偷走. 教程转自简书:https://www.jianshu.com/p/1cedcf183633 还有这些,你可能有用 修改位置 ...

  6. Excel大批量数据导出

    package com.tebon.ams.util; import lombok.extern.slf4j.Slf4j;import org.apache.poi.openxml4j.excepti ...

  7. 开发自定义ScriptableRenderPipeline,将DrawCall降低180倍

    0x00 前言 大家都知道,Unity在2018版本中正式推出了Scriptable Render Pipeline.我们既可以通过Package Manager下载使用Unity预先创建好的Ligh ...

  8. 深入理解JVM(四)——垃圾回收算法

    我们都知道java语言与C语言最大的区别就是内存自动回收,那么JVM是怎么控制内存回收的,这篇文章将介绍JVM垃圾回收的几种算法,从而了解内存回收的基本原理. stop the world 在介绍垃圾 ...

  9. 安装与配置Flutter开发环境

    这篇博客我们介绍了Flutter,并且对比了H5,React Native,Flutter. 由于Flutter是跨平台的开发框架,开发一次可以同时运行在Android和iOS上面,所以我们开发时最好 ...

  10. ASP.NET MVC 中读取项目文件的路径

    MVC中获取某一文件的路径,来进行诸如读取写入等操作. 例:我要读取的文件是新生模板.doc,它在如下位置. 获取它的全路径:string path = HttpContext.Current.Ser ...