第1章 JavaScript简介
JavaScript是一种专为与网页交互
而设计的脚本语言
。
一、ECMAScript
ECMA-262定义ECMAScript语言的标准,ECMAScript就是对实现该标准的语言描述
。ECMAScript的宿主环境包含Web浏览器、Node等,宿主环境不仅提供基本的ECMAScript实现,也会提供该语言的扩展(DOM、BOM),以便语言与环境对接交互,提供更多功能。
ECMA-262规定了这门语言的组成部分:
- 语法
- 类型
- 语句
- 关键字
- 保留字
- 操作符
- 对象
二、DOM
文档对象模型(Document Object Model)用于HTML的应用程序编程接口,DOM把整个页面映射为一个多层节点结构。借助DOM提供的API,可以删除、添加、替换或修改任何节点。
三、BOM
浏览器对象模型(Browser Object Model)用于访问和操作浏览器窗口。
- 弹出新浏览器窗口的功能;
- 移动、缩放和关闭浏览器窗口的功能;
- 提供浏览器详细信息的
navigator
对象; - 提供浏览器所加载页面的详细信息的
location
对象; - 提供用户显示器分辨率详细信息的
screen
对象; - 对cookies的支持;
- 像
XMLHttpRequest
和IE的ActiveXObject
这样的自定义对象。
第2章 在HTML中使用JavaScript——<script>
一、HTML 5为<script>
定义了下列属性:
async
:可选。表示应该立即下载脚本,但不应妨碍页面中的其他操作,比如下载其他资源或等待加载其他脚本。只对外部脚本文件有效。defer
:可选。表示脚本可以延迟到文档完全被解析和显示之后再执行。只对外部脚本文件有效。src
:可选。表示包含要执行代码的外部文件。type
:必选。表示编写代码使用的脚本语言的内容类型(也称为MIME类型)。虽目前type
属性的值依旧还是text/javascript
。不过,这个属性并不是必需的,如果没有指定这个属性,则其默认值仍为text/javascript
。
二、使用<script>
元素的方式有两种:
- 直接在页面中嵌入JavaScript代码:包含在
<script>
元素内部的JavaScript代码将被从上至下依次解释,在解释器对<script>
元素内部解释以前,页面中的其余内容都不会被浏览器加载或显示。
<script type="text/javascript">
function sayHi(){
alert("Hi!");
}
</script>
- 包含外部JavaScript文件:
src
属性的值是一个指向外部JavaScript文件的链接,与解析嵌入式JavaScript代码一样,在解析外部JavaScript文件(包括下载该文件)时,页面的处理也会暂时停止。只要不存在defer
和async
属性,浏览器都会按照<script>
元素在页面中出现的先后顺序对它们依次进行解析。
<script type="text/javascript" src="example.js"></script>
三、<script>
标签的位置
如果<script>
在<head>
中,则需等到全部JavaScript代码都被下载、解析和执行后,才能开始呈现页面的内容(浏览器在遇到<body>
标签时才开始呈现内容)。这对于那些需要很多JavaScript代码的页面来说,这无疑会导致浏览器在呈现页面时出现明显的延迟。因此,一般把<script>
放在<body>
页面内容后。
四、defer、async(只适用于外部脚本文件)
- defer:脚本会被延迟到页面解析完毕后再运行,相当于告诉浏览器立即下载,但延迟执行。HTML5规范要求脚本按照它们出现的先后顺序执行,因此第一个延迟脚本会先于第二个延迟脚本执行。
<head>
<title>Example HTML Page</title>
<script type="text/javascript" defer="defer" src="example1.js"></script>
<script type="text/javascript" defer="defer" src="example2.js"></script>
</head>
- async:脚本会被延迟到页面解析完毕后再运行,相当于告诉浏览器立即下载,但延迟执行。但并不保证按照指定它们的先后顺序执行。
<head>
<title>Example HTML Page</title>
<script type="text/javascript" async src="example1.js"></script>
<script type="text/javascript" async src="example2.js"></script>
</head>
五、文档模式
- 混杂模式:如果在文档开始处没有发现文档类型声明,则所有浏览器都会默认开启混杂模式,在不同浏览器下差异大。
- 标准模式:
<!DOCTYPE html>