DOMReady的介绍

今天在imooc上学习了DOMReady的概念, 写个博客总结并加深一下印象.

DOMReady是什么

说这个问题之前需要介绍一下,浏览器内核的渲染过程: 以WebKit为例

看下图:

DOM Ready其实就是浏览器引擎解析完HTML,在内存中完整的生成了DOM树的时候.这个时候所有的DOM元素已经就绪, 我们可以通过JS进行操作了.

为什么需要DOMReady

有时候我们可以通过window.onload事件,在页面加载完毕之后做一些事情. 使用window.onload有个问题,就是需要等到页面上所有资源下载完毕并渲染完成显示出来之后才会执行, 比如,当页面上有一些高清图片资源加载较慢时,我们的页面不能及时响应用户的输入,降低了用户体验.为解决这个问题,我们需要在浏览器引擎解析完HTML并生成了DOM树之后就开始执行我们的代码.

下图显示了DOM Ready和window.onload在浏览器引擎工作时所处的时间点:

怎么实现DOMReady

现在我们知道了这些知识,那么浏览器是怎么告诉我们DOM ready了呢?

符合W3C DOM标准的现代浏览器支持一个叫做DOMContentLoaded事件,IE6,7,8只能使用hack手段, 在DOM没有准备完毕的时候调用doScroll方法会报错这个特点来监控DOM Ready

DOMContentLoaded 事件是在 document上的, doScroll是在document.documentElement.doScroll上的

参考资料: http://www.cnblogs.com/zhangziqiu/archive/2011/06/27/DOMReady.html

时间: 2024-11-05 21:54:25

DOMReady的介绍的相关文章

关于ArcGIS API for JavaScript中basemap的总结介绍(一)

实际上basemap这个概念并不只在arcgis中才有,在Python中有一个matplotlib basemap toolkit(https://pypi.python.org/pypi/basemap),是用来实现地理信息可视化的.其中,matplotlib是Python常用的数据绘制包,basemap是matplotlib的一个子包,用来进行地图绘制.本文所指的basemap是指esri提供的基础底图图层. 正式使用basemap是在前一阵做webgis开发的时候,需要在自己的矢量图层下面

优秀网站看前端 —— 小米Note介绍页面

刚开始经营博客的时候,我写过不少“扒皮”系列的文章,主要介绍一些知名站点上有趣的交互效果,然后试着实现它们.后来开始把注意力挪到一些新颖的前端技术上,“扒皮”系列便因此封笔多时.今天打算重开“扒皮”的坑,不过咱挂个优雅点的名字——“优秀网站看前端”,顾名思义的,也是寻觅一些值得玩味的趣味网站,来学习它们的前端技术和交互理念. 作为本系列的开篇,我们拿“买手机送国土”的小米来打头阵,缘由是鄙人有着更换手机的打算又刚好看上小米note高配版,于是逛了下小米note的介绍页面,感觉交互做的挺不错,特别

微擎目录结构介绍

pro ├─ addons ---------------- [模块安装目录] (意为附加组件) │ ├─ business -------------- 模块的名称 (示例) │ │ ├─ images 建议 css 文件也放此目录. │ │ ├─ template 模板目录 │ │ │ ├─ mobile APP 端模板目录 │ │ │ │ └─ ... *.html APP 端模板文件 │ │ │ └─ ... *.html Web 端模板文件 │ │ ├─ inc 引用的 php 文件目

Javascript模块化编程(三)require.js的用法及功能介绍

这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战.我采用的是一个非常流行的库require.js感兴趣的朋友可以了解下啊 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <script src="1.js"

数据库介绍与分类

目录 数据库介绍与分类... 1 1.1 数据库介绍... 2 1.1.1什么是数据库... 2 1.2数据库的种类... 2 1.2.1关系型数据库介绍... 2 1.2.2非关系型数据库介绍... 3 1.3 常用关系型数据库产品介绍... 4 1.3.1 Oracle数据库... 4 1.3.2 MySQL数据库... 5 1.3.3 MariaDB数据库... 5 1.3.4 SqlServer数据库... 6 1.3.5 Access数据库... 6 1.3.6 其他不常用数据库...

基于位置信息的聚类算法介绍及模型选择

百度百科 聚类:将物理或抽象对象的集合分成由类似的对象组成的多个类的过程被称为聚类.由聚类所生成的簇是一组数据对象的集合,这些对象与同一个簇中的对象彼此相似,与其他簇中的对象相异."物以类聚,人以群分",在自然科学和社会科学中,存在着大量的分类问题.聚类分析又称群分析,它是研究(样品或指标)分类问题的一种统计分析方法.聚类分析起源于分类学,但是聚类不等于分类.聚类与分类的不同在于,聚类所要求划分的类是未知的. 分类和聚类算法一直以来都是数据挖掘,机器学习领域的热门课题,因此产生了众多的

Centos 7.3下 Linux For SQL Server安装及配置介绍

Centos 7.3下Linux For SQL Server安装及配置介绍 说到SQL Server服务,我们大家都知道是Microsoft公司的数据库服务,当然说到数据库,现在主要分为三大商:1:Oracle.2:Msql Server.3:Mysql:三种数据库在当下环境受到不了不同程度的关注:比如oracle主要应用到大型的商业比较多,比如银行:SQL Server主要在常见的互联网公司使用:mysql主要应用于小型的企业或者服务商使用:当然从费用上来说,Oracle是最贵的,也是最为稳

苹果高管斯洛基介绍A11仿生芯片背后的秘密!

9月13日凌晨,苹果在秋季发布会上正式推出了全新一代iPhone智能手机:iPhone 8.iPhone 8 Plus和iPhone X(发音为iPhone 10).这三款新设备的都搭载了全新的移动芯片,苹果称之为A11仿生(不是"Fusion"),并表示这是iPhone上有史以来最强大.最智能的芯片. 通过发布会介绍的A11仿生芯片细节,不难发现苹果自主定制芯片野心非常大,可谓雄心勃勃.并且随着时间的推移,针对半导体芯片的定制设计越来越多,A11达到了前所未有的高度.苹果在发布会中的

10.23 linux任务计划cron10.24chkconfig工具10.25 systemd管理服务10.26 unit介绍 10.27 target介绍

- 10.23 linux任务计划cron - 10.24 chkconfig工具 - 10.25 systemd管理服务 - 10.26 unit介绍 - 10.27 target介绍 - 扩展 1. anacron http://blog.csdn.net/strikers1982/article/details/4787226  2. xinetd服(默认机器没有安装这个服务,需要yum install xinetd安装) http://blog.sina.com.cn/s/blog_46