Chapter01. JavaScript 简介

一个完整的 JavaScript 由下列三个不同的部分组成:

  • 核心(ECMAScript)
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

ECMAScript

ECMA-262 的第 5 版是 JS 的第一个稳定版本,得到了各浏览器厂商的支持。它规定了语言的下列组成部分:

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

DOM

文档对象模型是针对 XML 但经过扩展用于 HTML 的 API 。DOM 把整个页面映射为一个多层次节点结构。HTML 或 XML 页面中的每个组成部分都是某种类型的节点,这些节点又包含着不同类型的数据。

DOM级别:

  • DOM Level 1

    • DOM Core
    • DOM HTML
  • DOM Level 2

    • DOM Views
    • DOM Events
    • DOM Style
    • DOM Traversal and Range
  • DOM Level 3

    • 扩展DOM Core,支持 XML 1.0 规范
    • DOM Load and Save
    • DOM Validation
  • 其他 DOM 标准

    • SVG 1.0
    • MathML 1.0
    • SMIL(同步多媒体集成语言)

BOM

原则上讲,BOM只处理浏览器窗口和框架,但下面一些针对浏览器的 JS 扩展也被看做是BOM的一部分:

  • 弹出新浏览器窗口
  • 移动、缩放和关闭浏览器窗口
  • 提供浏览器详细信息的 navigator 对象
  • 提供浏览器所加载页面的详细信息的 location 对象
  • 提供用户显示器分辨率详细信息的 screen 对象
  • 对 cookies 的支持
  • 像 XMLHttpRequest 和 ActiveXObject 这样的自定义对象

Chapter02. 在 HTML 中使用 JavaScript

script 元素

使用<script>元素的方式有两种:直接在页面中嵌入 JavaScript 代码和包含外部 JavaScript 文件。<script>定义了下列6种属性:

  • async:可选。 表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。
  • charset:可选。表示通过 src 属性指定代码的字符集。由于大多数浏览器会忽略它的值,因此这个属性值很少有人用。
  • defer:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。IE7 及更早版本对嵌入脚本也支持这个属性。
  • src:可选。表示包含要执行代码的外部文件。
  • type:可选。可以当作 language 的替代属性;表示编写代码使用的脚本语言的内容类型(也称 MIME 类型)。这个属性一般指定为 text / javascript ,不过这个属性不是必需的,如果没有指定这个属性,则默认值仍为text / javascript。

标签的位置

一般把全部 JavaScript 引用放在 <body> 元素中页面内容的后面。这样,在解析包含的 JavaScript 代码之前,页面的内容将完全呈现在浏览器中。

延迟脚本

<script>元素中设置 defer 属性,相当于告诉浏览器立即下载,但延迟执行。defer 属性只用于外部脚本文件。HTML5 规范要求脚本按照它们出现的先后顺序执行,而这两个脚本会先于 DOMContentLoaded 事件触发前执行。在现实中,延迟脚本不一定会按照顺序执行,也不一定会先于 DOMContentLoaded 事件触发前执行,因此最好只包含一个延迟脚本。

异步脚本

设置 async 属性与 defer 类似,只用于外部脚本文件,并告诉浏览器立即下载,但与 defer 不同的是,异步脚本不一定会按照顺序执行。可能会先于 DOMContentLoaded 事件触发前执行。

文档模式

IE5.5 引入了文档模式的概念,而这个概念是通过使用文档类型(doctype)切换实现的。 最初的两种文档模式是:混杂模式(quirks mode)和标准模式(standards mode)。混杂模式会让IE的行为与(包含非标准特性的)IE5相同,而标准模式则让IE的行为更接近标准行为。

标准模式

<!-- HTML 4.01 严格型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<!-- XHTML 1.0 严格型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!-- HTML 5 -->
<!DOCTYPE html>

准标准模式

<!-- HTML 4.01 过渡型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">

<!-- HTML 4.01 框架集型 -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">

<!-- XHTML 1.0 过渡型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!-- XHTML 1.0 框架集型 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

results matching ""

    No results matching ""