第2章 HTML中的JavaScript
了解 JavaScript 如何与 HTML 结合来创建动态网页,主要介绍在网页中嵌入 JavaScript 的不同方式,还有 JavaScript 的内容类型及其与
<script>元素的关系。
<script>元素
8个属性
- async:立即下载脚本,但不能阻止其他页面动作
- charset:XXXX 指定代码字符集,少用(因为大多数浏览器不在乎它的值)
复习到这里的时候,我感觉不能这么详尽的去记录所有的东西,有些东西用不到或者是很少用,干脆记录一些重要的或者是不懂的。
8个属性
- async:立即下载脚本,但不能阻止其他页面动作
- defer:脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效
- src:表示包含要执行的代码的外部文件
- type:表示代码块中脚本语言的内容类型
使用 src 属性的 script 元素,只会加载外部文件,而里面的代码会忽略。
标签位置
script 放在 head 标签内,意味着,必须把所有 JavaScript 代码都下载、解析和解释完成后,才能开始渲染页面(页面在浏览器解析到<body>的起始标签时开始渲染),这会导致页面渲染的明显延迟。
所以一般将 JavaScript 引用放在<body>元素中的内容后面。
推迟执行脚本
defer 属性,表示脚本在执行的时候不会改变页面的结构。也就是说,脚本会被延迟到整个页面都解析完毕后再执行。立即下载,但延迟执行。
两个 defer 脚本,会按次序执行。
会在 DOMContentLoaded 之前执行,但不一定。
异步执行脚本
async 属性,一样也是立即下载,与 defer 不同的是,标记 async 的脚本并不保证能按照它们出现的次序执行。
会在 load 事件之前执行,可能在 DOMContentLoaded 之前或之后执行。
动态加载脚本
除了 <script>,还有其他的动态加载脚本,利用DOM
let script = document.createElement('script');
script.src = 'gibberish.js';
document.head.appendChild(script);
XHTML中的变化
可扩展超文本标记语言(XHTML)是将 HTML 作为 XML 的应用重新包装的结果。
与 HTML 不同的是, XHTML 中使用 JavaScript 会更严格,例如 < 变成 <
废弃的语法
行内代码与外部文件
推荐使用外部文件,可维护性,缓存,适应未来
文档模式
混杂模式 和 标准模式, 准标准模式
<noscript>元素
下列情况会显示,
- 浏览器不支持脚本;
- 浏览器对脚本的支持被关闭;
小结
- src 外部文件
- 所有的 script 元素会依照次序被解释
- script 放在 head 会解析完成才会渲染,建议放到 body 内容后面
- defer 立即下载,DOMContentLoaded 之前解析,也有可能延迟,多个 script 会依次下载
- async 立即下载,Load 之前解析,顺序不一致
- noscript 脚本不支持或者关闭的情况下显示