重学JS-第一章、第二章

91 阅读2分钟

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的显示

  1. 浏览器不支持脚本
  2. 浏览器支持脚本,但是脚本被禁用

区别

defer是表明脚本在执行时不会影响页面的构造。也就是说,脚本会被延迟到整个页面都解析完毕后再运行。浏览器渲染页面,读取到包含defer属性的外部

  async浏览器立即异步下载文件,不同于defer得是,下载完成会立即执行,此时会阻塞dom渲染,所以async的script最好不要操作dom。因为是下载完立即执行,不能保证多个加载时的先后顺序