JavaScript 红宝书笔记 - 第 2 章. HTML 中的 JS

属性

async 属性

加载外部脚本文件,通知浏览器立即下载,异步执行(不保证按出现次序执行)。

保证会在 load 事件之前执行,可能会在 DOMContentLoaded 事件之前或之后。

defer 属性

脚本可以延迟到文档被完全解析和显示后(解析到<\html>标签之后)再执行,仅对外部脚本有效。

都会在 DOMContentLoaded 事件之前执行。不一定总会按顺序执行或者在 DOMContentLoaded 事件之前执行。因此最好只包含一个这样的脚本。

若没有以上两种属性,脚本将按在 <script> 中出现的顺序解析。

标签位置

传统的方法是将所有 <script> 元素都放在 <head> 中,这样做的话将会解析完所有 JS 代码之后才会渲染页面,所以为解决这个问题可以将所有 JS 引用放在 <body> 元素的页面内容后面。

<noscript> 元素

通过使用 <noscript> 元素,可以指定在浏览器不支持脚本时显示的内容。如果浏览器支持并启用脚本,则 <noscript> 元素中的任何内容都不会被渲染。