# DOMContentLoaded、readystatechange、load、ready
**DOMContentLoaded** 时,浏览器已经加载好HTML,DOM树也绘制完成,但是其他外部资源如图片,样式等还未加载好。在此时,可以为元素绑定事件,初始化接口等。
**Loaded**时,所有外部资源都加载完毕,可以正确读取资源数据。
**readystatechange**用于表现document的loading状态,有三个可能取值:
1. loading 文档依然在被加载。
2. interactive 文档加载结束,并且被解析,但是例如图片等文件依然在加载中。
3. complete 文档与子资源加载结束,即将触发load事件。
## 具体加载流程
1. 首先,发出加载资源请求,在加载完成之前不触发任何事件。
2. document加载完毕,css等加载并未完成,此时readyState为'interactive',表明document已经load并解析完成,触发 readystatechange,然后触发DOMContentLoaded。捎带提一句,此时,加载完成且带有defer标记的脚本,会按顺序开始执行。
3. css、img等子资源加载完成之后,此时触发window.load事件
4. 点击关闭标签或者刷新时,会依次触发beforeunload、unload事件。
## defer/async
| | async | defer|
| --- | --- | --- |
| 执行顺序 | 谁先完成下载谁先执行 | 始终按照加载顺序,即使先下载完成 |
| DOMContentLoaded | 如果页面加载时间较长,脚本可能会先执行;绝大多数会在DOMContentLoaded之后执行,但一定是在Load事件之前执行 | 脚本会在DOMContentLoaded之前执行,但不阻塞浏览器加载和解析文档,即defer脚本与浏览器加载顺序无关先后 |
## 表单自动填充
浏览器内置的表单自动填充在DOMContentLoaded触发的时候完成。
- html
- 冒泡/捕获/委托
- 前端路由
- Dom
- 创建节点API
- 页面修改型API
- 节点查询型API
- 节点关系型API
- 元素属性API
- DOM事件
- classList
- 性能优化
- 节流防抖
- localStorage sessionStorage
- BOM
- meta
- data属性
- js实现拖拽
- html5
- 关于meta
- 轮播图
- js实现拖放
- 电话号inputFormater
- js
- es6
- promise
- iterator
- generator
- async
- proxy
- Set
- Map
- Object的扩展
- String
- Iterator
- Symbol
- 解构赋值
- 函数式编程
- module
- 基本数据类型
- 数组相关codings
- for of/for in
- this
- call bind apply
- 闭包
- 作用域
- prototype与继承
- 深浅拷贝
- setTimeOut/setInterval
- 垃圾处理机制
- 设计模式
- 观察者模式
- 单例模式
- 策略模式
- RegExp
- with
- 其他玩意
- Error/Stack Trace
- 面向对象
- css
- 回流重绘
- %取值
- 属性继承/属性优先级
- flex
- BFC
- 盒模型
- 设置css的方法
- 定位机制
- 块级/行内元素
- hack和一些别的玩意
- css动画
- 几个布局
- 画图形
- css3
- animation对比transform
- 点击不同图片区域跳转不同
- css选择器性能问题
- vh rem em
- css选择器
- 伪类伪元素
- css匹配原理
- 数据结构与算法
- 数据结构
- 树
- 链表
- 栈和队列
- 排序
- 归并排序
- 插入排序
- 选择排序
- 冒泡排序
- 快速排序
- 递归
- 回溯法
- 搜索算法
- 动态规划
- http
- 跨域问题
- CORS
- GET/POST
- ajax
- ajax上传文件
- http缓存
- https
- TCP/UDP
- cookie/session
- http2.0
- spdy
- websocket
- React
- redux
- 生命周期
- 虚拟dom与diff
- 双向数据绑定
- mvvm
- setState
- contextApi props reudx
- 高阶组件
- react-redux
- Fiber
- react-router
- 受控/非受控组件
- 待整理
- webpack
- loader实现
- 前端安全
- 移动端适配
- Vue
- 传值
- 其他