javascript高级-第二章 HTML中的JavaScript

137 阅读2分钟

第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 会更严格,例如 < 变成 &lt;

废弃的语法

行内代码与外部文件

推荐使用外部文件,可维护性,缓存,适应未来

文档模式

混杂模式 和 标准模式, 准标准模式

<noscript>元素

下列情况会显示,

  • 浏览器不支持脚本;
  • 浏览器对脚本的支持被关闭;

小结

  • src 外部文件
  • 所有的 script 元素会依照次序被解释
  • script 放在 head 会解析完成才会渲染,建议放到 body 内容后面
  • defer 立即下载,DOMContentLoaded 之前解析,也有可能延迟,多个 script 会依次下载
  • async 立即下载,Load 之前解析,顺序不一致
  • noscript 脚本不支持或者关闭的情况下显示