博客地址: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. 使用getline输入一行字符串

    给定10个国家名,按字母顺序输出,国家名中可以包含空格,国家名用换行隔开 #include<algorithm> #include<iostream> #include< ...

  2. 动态规划-LIS1

    https://vjudge.net/contest/297216?tdsourcetag=s_pctim_aiomsg#problem/J #include<bits/stdc++.h> ...

  3. Java语法细节 - synchronized和volatile

    目录 synchronized关键字 关键字volatile synchronized关键字 synchronized关键字锁住方法和this的不同之处: public synchronized vo ...

  4. 面试题5-[剑指offer] 二维数组中的查找

    题目 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  5. spring的配置和使用

    spring的配置和使用 1. 创建基于java的配置. 配置极少量的XML来启用java配置:   <?xml version="1.0" encoding="U ...

  6. [python] PyMouse、PyKeyboard用python操作鼠标和键盘

      1.PyUserInput 简介 PyUserInput是一个使用python的跨平台的操作鼠标和键盘的模块,非常方便使用.支持的平台及依赖如下: Linux - Xlib Mac - Quart ...

  7. Springboot Selenide UI 自动化测试

    标题中的Selenide 并没有拼错,确实不是selenium Selenium做UI自动化,可以参考我其他的blog: Selenium做自动化最好要封装起来,否则对于元素的等待,页面的加载会使得自 ...

  8. [Swift]LeetCode208. 实现 Trie (前缀树) | Implement Trie (Prefix Tree)

    Implement a trie with insert, search, and startsWith methods. Example: Trie trie = new Trie(); trie. ...

  9. [Swift]LeetCode633. 平方数之和 | Sum of Square Numbers

    Given a non-negative integer c, your task is to decide whether there're two integers a and b such th ...

  10. [Swift]LeetCode1011. 在 D 天内送达包裹的能力 | Capacity To Ship Packages Within D Days

    A conveyor belt has packages that must be shipped from one port to another within D days. The i-th p ...