1DOM简介
DOM1 :DOM core , DOM HTML
DOM2:事件的扩充,css操作的支持
DOM3:支持XML
2在HTML中使用JS
script
- async 立即下载js文件,只对外部脚本文件有效
有async的脚本不保证按照指定顺序执行,因此多个async脚本互不依赖很重要
实现异步加载
会在load事件前执行,可能在DOMContentLoaded前后执行
- defer 延迟执行,只对外部脚本文件有效
所在script放于头部时,相当于告诉浏览器,立即加载,延迟执行
HTML5规范要求脚本按照出现先后执行,第一个脚本先执行
现实中,多个延迟脚本不一定按照规范那样,先后顺序执行,所以一个HTML最好只有一个defer
- charset
- src
- type 脚本语言类型
- language 已经废弃
页面内嵌入JS代码
页面内引入JS文件
名词:MIME类型,脚本语言内容类型
为什么把script写在body后面?
两者区别
DOMContentLoaded
当初始的 HTML 文档被完全加载和解析完成之后,DOMContentLoaded 事件被触发,而无需等待样式表、图像和子框架的完成加载。
load
load 仅用于检测一个完全加载的页面,页面的html、css、js、图片等资源都已经加载完之后才会触发 load 事件。
文档模式
- 严格型
- 过渡型
- 框架集型
noscript的显示
- 浏览器不支持脚本
- 浏览器支持脚本,但是脚本被禁用
区别
defer是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。浏览器渲染页面,读取到包含defer属性的外部
async浏览器立即异步下载文件,不同于defer得是,下载完成会立即执行,此时会阻塞dom渲染,所以async的script最好不要操作dom。因为是下载完立即执行,不能保证多个加载时的先后顺序