向HTML页面中插入JavaScript的主要方法是,使用<script>元素。
HTML4.01为<script>定义了下列6个属性(都为可选项)
1:async:表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如,下载其他资源或等待加载其他资源。只对外部脚本有效
2:defer:表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效
3:src:表示包含要执行代码的外部文件
4:charset:表示通过src属性指定的代码的字符集,因大多数浏览器会忽略它的值,故很少人使用
5:language:已废弃
6:type:可以看成是language的代替属性;表示编写代码使用的脚本语言的内容类型。默认为"text/javascript"
其中async与defer的区别在于
1:按照规范,async的执行顺序并不能保证为文档的先后编写顺序,
defer原则上是根据文档的先后顺序执行的,
可是,实际过程中,这些延迟脚本,并不一定会按照顺序执行,也不一定会在DOMContentLoaded事件触发前执行,
但会在loaded事件之前执行。
因此最好只包含一个延迟脚本
2:async在异步加载完成之后,会立即执行,而defer在异步加载完成的时候并不会,立即执行,
而是等待整个HTML文档解析完成之后,再执行。
具体可参考下图:
