第一篇 JavaScript入门篇 2
第1章 JavaScript语言概述 2
1.1 JavaScript是什么 2
1.1.1 JavaScript简史 2
1.1.2 JavaScript有何特点 3
1.2 JavaScript能做什么 4
1.2.1 表单数据合法性验证 4
1.2.2 页面特效 4
1.2.3 交互式菜单 5
1.2.4 动态页面 5
1.2.5 数值计算 6
1.3 JavaScript编程起步 7
1.3.1 “Hello World!”程序 7
1.3.2 选择JavaScript脚本编辑器 8
1.4 如何引入JavaScript脚本代码 8
1.4.1 通过〈script〉与〈/script〉标记对引入 8
1.4.2 通过〈script〉标记的src属性引入 9
1.4.3 通过JavaScript伪URL引入 10
1.4.4 通过HTML文档事件处理程序引入 11
1.5 嵌入JavaScript脚本代码的位置 12
1.5.1 在〈head〉与〈/head〉标记对之间放置 12
1.5.2 在〈body〉与〈/body〉标记对之间放置 12
1.5.3 在两个标记对之间混合放置 13
1.6 选择合适的浏览器 13
1.7 处理不支持JavaScript脚本的情况 15
1.7.1 使用〈!--和--〉标记对直接屏蔽法 15
1.7.2 使用〈noscript〉和</noscript〉标记对给出提示信息 16
1.8 JavaScript的实现基础 16
1.8.1 ECMAScript 16
1.8.2 DOM 17
1.8.3 BOM 18
1.9 客户端与服务器端脚本 18
1.10 JavaScript与JScript、VBScript 19
1.11 JavaScript与Java、Java Applet 20
1.12 JavaScript的未来如何 21
1.13 本章小结 22
第2章 JavaScript语言基础 23
2.1 编程准备 23
2.1.1 编程术语 23
2.1.2 脚本执行顺序 24
2.1.3 大小写敏感 24
2.1.4 空白字符 24
2.1.5 分号 24
2.1.6 块 25
2.2 数值类型 25
2.2.1 整数型和浮点型数值 25
2.2.2 八进制和十六进制 25
2.3 变量 26
2.3.1 变量标识符 26
2.3.2 变量声明 26
2.3.3 变量作用域 26
2.4 弱类型 28
2.5 基本数据类型 29
2.5.1 Number型 29
2.5.2 String型 29
2.5.3 Boolean型 30
2.5.4 Undefined型 30
2.5.5 Null型 30
2.5.6 Function型 30
2.6 组合类型 30
2.6.1 Array型 31
2.6.2 Object型 32
2.7 运算符 33
2.7.1 赋值运算符 33
2.7.2 基本数学运算符 35
2.7.3 位运算符 37
2.7.4 位移运算符 38
2.7.5 自加和自减 39
2.7.6 比较运算符 41
2.7.7 逻辑运算符 42
2.7.8 逗号运算符 42
2.7.9 空运算符 44
2.7.10 ?...:运算符 44
2.7.11 对象运算符 45
2.7.12 typeof运算符 47
2.7.13 运算符优先级 48
2.8 核心语句 49
2.8.1 基本处理流程 50
2.8.2 if条件假设语句 50
2.8.3 switch流程控制语句 51
2.8.4 for循环语句 53
2.8.5 while和do-while循环语句 53
2.8.6 使用break和continue进行循环控制 55
2.8.7 with对象操作语句 56
2.8.8 使用for...in进行对象循环 56
2.8.9 含标签的语句 57
2.9 函数 59
2.9.1 函数的基本组成 59
2.9.2 全局函数与局部函数 60
2.9.3 作为对象的函数 63
2.9.4 函数递归调用 65
2.9.5 语言注释语句 67
2.9.6 函数应用注意事项 67
2.10 本章小结 68
第3章 JavaScript事件处理 69
3.1 什么是事件 69
3.2 HTML文档事件 70
3.2.1 事件捆绑 70
3.2.2 浏览器事件 71
3.2.3 HTML元素事件 72
3.2.4 IE扩展的事件 76
3.3 JavaScript如何处理事件 78
3.3.1 匿名函数 78
3.3.2 显式声明 79
3.3.3 手工触发 81
3.4 事件处理器的返回值 82
3.5 事件处理器设置的灵活性 84
3.6 现代事件模型与Event对象 86
3.7 IE4中的Event对象 87
3.7.1 对象属性 87
3.7.2 事件上溯 89
3.7.3 阻止事件上溯 91
3.7.4 事件改向 93
3.8 NN4中的Event对象 95
3.8.1 对象属性 95
3.8.2 事件捕获 96
3.8.3 关闭事件捕获 98
3.8.4 事件传递 98
3.9 DOM的解决之道 99
3.9.1 事件流方向 100
3.9.2 Event对象 100
3.9.3 事件类型 101
3.10 本章小结 101
第4章 JavaScript基于对象编程 102
4.1 面向对象编程与基于对象编程 102
4.1.1 什么是对象 102
4.1.2 面向对象编程 103
4.1.3 面向对象编程:继承 103
4.1.4 面向对象编程:封装 103
4.1.5 面向对象编程:多态 104
4.1.6 基于对象编程 104
4.2 JavaScript对象的生成 105
4.2.1 HTML文档结构 105
4.2.2 DOM框架 106
4.2.3 顶级对象之间的关系 107
4.2.4 浏览器载入文档时对象的生成 108
4.3 JavaScript核心对象 110
4.4 文档对象的引用 110
4.4.1 通过对象位置访问文档对象 110
4.4.2 通过name属性访问文档对象 112
4.4.3 通过id属性访问文档对象 113
4.4.4 通过联合数组访问文档对象 115
4.5 创建和使用自定义对象 116
4.5.1 通过定义对象的构造函数的方法 116
4.5.2 通过对象直接初始化的方法 118
4.5.3 修改、删除对象实例的属性 119
4.5.4 通过原型为对象添加新属性和新方法 120
4.5.5 自定义对象的嵌套 122
4.5.6 内存的分配和释放 124
4.6 本章小结 124
第5章 文档对象模型(DOM) 125
5.1 DOM概述 125
5.1.1 基本对象模型 127
5.1.2 Netscape Navigator浏览器扩展 127
5.1.3 Internet Explorer浏览器扩展 130
5.1.4 Opera、Mozilla和其他浏览器扩展 132
5.1.5 W3C DOM 133
5.1.6 W3C DOM规范级别 133
5.2 文档对象模型的层次 134
5.3 文档对象的产生过程 135
5.4 对象的属性和方法 136
5.4.1 何谓节点 136
5.4.2 元素节点(element node) 136
5.4.3 文本节点(text node) 137
5.4.4 属性节点(attribute node) 137
5.4.5 对象属性 137
5.4.6 id属性和class属性 140
5.4.7 通过id属性返回指定对象 142
5.4.8 通过元素标签返回指定对象 142
5.4.9 通过name属性返回指定对象 143
5.4.10 获取特定属性的取值 144
5.4.11 设置特定属性的取值 144
5.4.12 删除特定的属性 145
5.5 附加的节点处理方法 146
5.5.1 生成节点 147
5.5.2 插入和添加节点 148
5.5.3 复制节点 152
5.5.4 删除和替换节点 154
5.5.5 文本节点操作 157
5.6 对象的事件处理程序 159
5.7 浏览器兼容性策略 160
5.8 本章小结 161
第6章 String、Math、Array等数据对象 16
6.1 String对象 162
6.1.1 如何使用String对象方法操作字符串 162
6.1.2 获取目标字符串长度 163
6.1.3 连接两个字符串 164
6.1.4 验证电子邮件地址的合法性 165
6.1.5 返回指定位置的字符串 167
6.1.6 在URL中定位字符串 168
6.1.7 分隔字符串 170
6.1.8 将字符串标记为HTML语句 172
6.1.9 常见属性和方法汇总 174
6.2 Math对象 175
6.2.1 基本数学运算 175
6.2.2 任意范围随机数发生器 177
6.2.3 访问其基本属性 178
6.2.4 使用with声明简化表达式 179
6.2.5 常见属性汇总 180
6.2.6 常见方法汇总 181
6.3 Array对象 182
6.3.1 创建数组并访问其特定位置元素 182
6.3.2 数组中元素的顺序问题 183
6.3.3 模拟堆栈和队列操作的方法 185
6.3.4 使用splice()方法添加和删除数组元素 187
6.3.5 修改length属性更改数组 189
6.3.6 调用Array对象的方法生成字符串 191
6.3.7 连接两个数组 192
6.3.8 常见属性和方法汇总 193
6.4 Date对象 195
6.4.1 生成日期对象的实例 195
6.4.2 提取日期各字段 197
6.4.3 设置日期各字段 199
6.4.4 将日期转化为字符串 201
6.4.5 常见属性和方法汇总 203
6.5 Number对象 204
6.5.1 创建Number对象的实例 204
6.5.2 将Number对象转化为字符串 205
6.5.3 通过原型属性为对象添加属性和方法 206
6.5.4 常见属性和方法汇总 207
6.6 Boolean对象 208
6.6.1 创建Boolean对象的实例 208
6.6.2 将Boolean对象转化为字符串 210
6.6.3 常见属性和方法汇总 211
6.7 Function对象 211
6.7.1 两个概念:Function与function 211
6.7.2 使用Function对象构造函数 212
6.7.3 常见属性和方法汇总 213
6.8 Object对象 213
6.8.1 创建Object对象的实例 213
6.8.2 常见属性和方法列表 215
6.9 本章小结 215
第7章 Window及相关顶级对象 216
7.1 顶级对象模型参考 216
7.2 Window对象 216
7.2.1 警告框 217
7.2.2 确认框 217
7.2.3 提示框 218
7.2.4 实例:学生信息采集系统 219
7.2.5 设定时间间隔 223
7.2.6 事件超时控制 225
7.2.7 创建和管理新窗口 227
7.2.8 常见属性和方法汇总 230
7.3 Navigator对象 232
7.3.1 获取浏览器信息 232
7.3.2 常见方法和属性汇总 234
7.4 Screen对象 235
7.4.1 获取客户端屏幕信息 235
7.4.2 定位窗口到指定位置 237
7.4.3 常见属性和方法汇总 240
7.5 History对象 241
7.5.1 使用back()和forward()方法进行站点导航 241
7.5.2 使用go()方法进行站点导航 243
7.5.3 常见属性和方法汇总 245
7.6 Location对象 246
7.6.1 统一资源定位器(URL) 246
7.6.2 Location对象属性与URL的对应 247
7.6.3 使用reload()方法重载页面 249
7.7 Frame对象 251
7.7.1 框架集文档中对象的结构 251
7.7.2 控制指定的框架 252
7.7.3 常见属性和方法汇总 257
7.7.4 Frameset对象 258
7.7.5 iframe元素对象 262
7.8 Document对象 267
7.9 本章小结 267
第8章 Document对象 268
8.1 对象模型参考 268
8.2 Document对象 269
8.2.1 获取目标文档信息 269
8.2.2 设置文档颜色值 273
8.2.3 往文档中写入新内容 275
8.2.4 常见属性和方法汇总 280
8.3 body元素对象 282
8.3.1 获取body元素对象信息 282
8.3.2 常见属性和方法汇总 283
8.4 本章小结 284
第9章 anchor对象和link对象 285
9.1 对象之间关系 285
9.2 anchor对象 287
9.3 link对象 288
9.3.1 更改href属性默认行为 288
9.3.2 获取href属性详细信息 290
9.3.3 常见属性汇总 291
9.4 本章小结 292
第10章 image、area和map对象 293
10.1 image对象 293
10.1.1 对象访问 294
10.1.2 获取对象的信息 294
10.1.3 使用image对象缓存图片 296
10.1.4 常见属性和方法汇总 297
10.2 area对象和map对象 299
10.2.1 area对象 299
10.2.2 map对象 300
10.2.3 图片区域映射 301
10.3 本章小结 302
第11章 style和styleSheet对象 303
11.1 样式表导入方法 303
11.1.1 直接嵌入样式信息 303
11.1.2 通过@import选择符附加法 304
11.1.3 使用link关键字链接外部样式表 304
11.2 style相关对象集合 305
11.2.1 style元素对象和styleSheets对象数组 305
11.2.2 rule对象和cssRule对象 306
11.2.3 style元素对象和style对象 306
11.3 style元素对象 307
1 1.4 styleSheets对象数组 307
11.5 rule对象和cssRule对象 309
11.5.1 常见属性和方法汇总 309
11.5.2 返回和设置样式表信息 310
11.6 style对象 313
11.6.1 属性值类型 314
11.6.2 文本属性 315
11.6.3 定位属性 316
11.6.4 边界属性 318
11.7 filter对象 320
11.7.1 滤镜访问 320
11.7.2 alpha滤镜 323
11.7.3 blur滤镜 324
11.7.4 chroma滤镜 326
11.7.5 dropShadow滤镜 327
11.7.6 flipH滤镜 328
11.7.7 flipV滤镜 329
11.7.8 glow滤镜 329
11.7.9 gray滤镜 331
11.7.10 invert滤镜 331
11.7.11 light滤镜 332
11.7.12 mask滤镜 335
11.7.13 shadow滤镜 336
11.7.14 wave滤镜 337
11.7.15 xRay滤镜 337
11.8 本章小结 338
第12章 定位对象和嵌入对象 339
12.1 定位对象 339
12.1.1 div对象 339
12.1.2 div对象的浏览器兼容性 341
12.1.3 通过style关键字访问div对象 341
12.1.4 span对象 345
12.1.5 使用span对象生成雪花效果 346
12.2 嵌入对象 348
12.2.1 applet元素对象 348
12.2.2 embed元素对象 351
12.2.3 object元素对象 351
12.3 本章小结 353
第13章 HTML元素对象 354
13.1 表单对象 354
13.2 form元素对象 355
13.2.1 对象访问途径 355
13.2.2 表单数据传递 355
13.2.3 完全引用法 356
13.2.4 使用this.form作为参数传递 356
13.2.5 直接传递法 356
13.2.6 对象测试程序 357
13.2.7 常见属性和方法汇总 359
13.3 text、hidden、password和textarea元素对象 360
13.3.1 text元素对象 360
13.3.2 hidden元素对象 365
13.3.3 password元素对象 365
13.3.4 textarea元素对象 366
13.4 button、reset和submit元素对象 368
13.4.1 button元素对象 368
13.4.2 reset元素对象 370
13.4.3 submit元素对象 370
13.4.4 用户注册实例 371
13.5 checkbox和radio元素对象 372
13.5.1 checkbox元素对象 372
13.5.2 radio元素对象 373
13.5.3 学籍注册实例 374
13.6 select和option元素对象 376
13.6.1 select元素对象 376
13.6.2 option元素对象 378
13.6.3 动态更新下拉列表(NN3+和IE4+) 379
13.6.4 动态更新下拉列表(NN6+和IE5+) 382
13.6.5 动态更新下拉列表(W3C DOM) 384
13.7 fieldset、legend和label元素对象 386
13.7.1 fieldset和legend元素对象 386
13.7.2 label元素对象 387
13.8 表格对象 388
13.8.1 table元素对象 389
13.8.2 thead、tbody和tfoot元素对象 393
13.8.3 tr、td和th元素对象 395
13.8.4 caption元素对象 398
13.8.5 col和colgroup元素对象 400
13.9 列表对象 402
13.9.1 ol元素对象 402
13.9.2 ul元素对象 403
13.9.3 li元素对象 404
13.9.4 dl、dt和dd元素对象 405
13.10 文本属性对象 405
13.10.1 blockquote和q元素对象 406
13.10.2 br元素对象 406
13.10.3 font元素对象 406
13.10.4 hl-h6元素对象 409
13.10.5 hr元素对象 410
13.10.6 marquee元素对象 412
13.10.7 Text和TextNode元素对象 415
13.11 本章小结 416
第二篇 JavaScript进阶篇第14章 正则表达式 418
14.1 正则表达式简介 418
14.2 如何使用正则表达式 419
14.3 RegExp对象 421
14.3.1 RegExp对象的创建 421
14.3.2 实例属性 422
14.3.3 静态属性 422
14.3.4 属性应用实例 423
14.4 正则表达式的操作方法 425
14.4.1 test()方法 425
14.4.2 exec()方法 426
14.4.3 compile()方法 426
14.4.4 RegExp对象中三种方法综合举例 427
14.4.5 search()方法 428
14.4.6 match()方法 429
14.4.7 replace()方法 431
14.4.8 split()方法 433
14.4.9 小结 435
14.5 简单模式 435
14.5.1 普通字符 435
14.5.2 特殊字符 436
14.5.3 字符类 436
14.5.4 量词 438
14.5.5 贪婪模式 439
14.5.6 非贪婪模式 439
14.5.7 简单模式综合举例 439
14.6 复杂模式 441
14.6.1 分组 441
14.6.2 反向引用 441
14.6.3 候选 442
14.6.4 非捕获性分组 442
14.6.5 正向前瞻 442
14.6.6 负向前瞻 443
14.6.7 边界定位符 443
14.6.8 正则表达式中操作符的优先权顺序 443
14.6.9 复杂模式综合实例 444
14.7 基本操作实例 446
14.7.1 验证日期 446
14.7.2 验证信用卡号 447
14.7.3 验证电子邮件地址 449
14.8 一些常用的正则表达式 451
14.9 本章小结 452
第15章 JavaScript中的XML 453
15.1 XML简介 453
15.1.1 什么是XML 453
15.1.2 一个简单的XML文档 454
15.1.3 一个相对完整的XML文档 455
15.1.4 构建良构的XML文档准则 456
15.1.5 XML的显示 457
15.1.6 XML小结 458
15.2 JavaScript中的XML DOM 458
15.2.1 XML DOM 459
15.2.2 XML DOM树型结构 459
15.3 Microsoft IE对XML DOM的支持 460
15.3.1 创建XML DOM 461
1 5.3.2 装载XML文档 462
15.3.3 读取XML文档 463
15.3.4 XML文档有效性检查 465
15.3.5 节点操作 466
15.4 Mozilla Firefox对XML DOM的支持 471
15.4.1 创建XML DOM 471
15.4.2 装载 471
15.4.3 读取XML文档 472
15.4.4 错误处理 473
1 5.5 智能XML DOM 475
15.6 JavaScript中的XPath 478
15.6.1 XPath简介 479
15.6.2 JavaScript中使用Xpath(Microsoft IE) 479
15.6.3 JavaScript中XPath查询实例(Microsoft IE) 480
15.6.4 Mozilla Firefox对XPath的支持 483
15.7 JavaScript对XSLT的支持 486
15.7.1 JavaScript中使用XSLT(Mocrosoft IE) 486
15.7.2 JavaScript中使用XSLT(Mozilla Firefox) 488
15.8 本章小结 491
第16章 客户端与服务器端通信 492
16.1 HTTP请求 492
16.1.1 XMLHttp对象简介 492
16.1.2 XMLHttp对象的属性和方法 492
16.1.3 使用XMLHttp对象发送请求 495
16.1.4 GET请求 495
16.1.5 POST请求 496
1 6.2 LiveConnect请求 497
16.3 LiveConnect请求中的get方法 498
16.3.1 创建java.net.URL实例对象 498
16.3.2 打开一个输入流,准备接受数据 498
16.3.3 创建一个Reader,准备读取数据 499
16.3.4 处理服务器返回的数据 499
16.3.5 关闭Reader,返回responseText 499
16.3.6 调用LiveConnect请求的get方法 500
16.4 LiveConnect请求中的post方法 500
16.4.1 建立连接,设置环境变量 500
16.4.2 发送参数请求 501
16.4.3 接收处理数据 501
16.4.4 调用LiveConnect请求的post方法 502
16.5 智能HTTP请求 502
16.5.1 智能GET请求 503
16.5.2 智能POST请求 504
16.6 Windows Cookie 505
16.6.1 什么是Cookie 505
16.6.2 Cookie的结构 506
16.6.3 建立Cookie 507
16.6.4 读取Cookie 507
16.6.5 删除Cookie 508
16.6.6 Cookie应用实例:记录用户名和访问次数 508
16.6.7 服务器端的Cookie操作 511
16.6.8 客户端和服务器端的Cookie传递 511
16.6.9 Cookie的安全性 514
16.6.10 如何禁止Cookie 514
16.7 本章小结 515
第17章 JavaScript与Ajax技术 516
17.1 什么是Ajax 516
17.1.1 Ajax的定义 516
17.1.2 Ajax的诞生与发展 517
17.2 为什么需要Ajax 517
17.2.1 传统的Web框架 517
17.2.2 Ajax技术框架 518
17.2.3 Ajax的优势 519
17.3 Ajax核心技术 520
17.3.1 JavaScript 520
17.3.2 XMLHttpRequest 520
17.3.3 DOM 520
17.3.4 XML 521
17.4 Ajax应用实例 521
17.4.1 Google主页 521
17.4.2 Google Maps 522
17.5 Ajax应用场景 523
17.5.1 数据验证 523
17.5.2 按需读取数据 524
17.5.3 自动实时更新页面 524
17.6 使用Ajax 524
17.6.1 创建XMLHttpRequest对象 525
17.6.2 向服务器发送请求 525
17.6.3 处理服务器响应 526
17.6.4 完整的Ajax框架 526
17.6.5 开山之作:“Hello,Ajax”程序 528
17.6.6 注册信息实时验证实例 530
17.6.7 级联目录实例 537
17.6.8 自动实时更新页面 540
17.6.9 小结 543
17.7 Ajax的不足之处 543
17.8 本章小结 544
第三篇 JavaScript高级篇第18章 JavaScript错误与异常处理 546
18.1 为何进行错误处理 546
18.2 错误与异常的关系 546
18.2.1 错误 547
18.2.2 异常 547
18.2.3 错误和异常的异同点 548
18.3 不同浏览器环境中的错误报告 548
18.3.1 Windows IE 549
18.3.2 Mozilla Firefox 550
18.3.3 MacOS Safari 551
18.3.4 MacOS IE 551
18.3.5 Opera 7 551
18.3.6 小结 551
18.4 使用onerror事件进行错误处理 551
18.4.1 onerror事件 552
18.4.2 onerror错误处理方法 552
18.4.3 onerror错误处理方法的优缺点 554
18.5 使用try/catch结构进行错误处理 554
18.5.1 try/catch结构 554
18.5.2 Error对象 556
18.5.3 嵌套try/catch结构 557
18.5.4 throw抛出异常 557
18.6 脚本代码调试 558
18.6.1 使用alert语句跟踪调试 558
18.6.2 使用Java控制台 560
18.6.3 使用Microsoft Script Debugger调试器 560
18.6.4 使用Venkman调试器 563
18.7 本章小结 566
第19章 JavaScript与插件通信 567
19.1 浏览器插件 567
19.1.1 流行的浏览器插件 567
19.1.2 检测已安装的插件 568
19.2 JavaScript与Java Applet通信 569
19.2.1 JavaScript脚本访问Java Applet 569
19.2.2 Java Applet访问JavaScript脚本 571
19.2.3 Java Applet安全性问题与措施 574
19.3 JavaScript与Flash通信 575
19.3.1 JavaScript脚本访问Flash 575
19.3.2 Flash访问JavaScript脚本 577
19.3.3 getURL()函数 577
19.3.4 fsCommand()函数 578
19.3.5 综合应用实例 579
19.4 本章小结 581
第20章 JavaScript脚本的安全性 582
20.1 何谓安全性 582
20.1.1 安全性分类 582
20.1.2 历史安全措施 583
20.1.3 同源政策 583
20.1.4 数据感染 583
20.1.5 数字签名 584
20.1.6 总体解决方案 585
20.2 JavaScript代码安全性 585
20.2.1 使用内建函数 585
20.2.2 使用转义字符“\” 587
20.2.3 使用工具软件 588
20.2.4 使用加密算法 589
20.3 JavaScript资源访问安全性 590
20.3.1 创建ActiveXObject对象 591
20.3.2 Scripting.FileSystemObject对象 592
20.3.3 文件操作 592
20.3.4 文件夹操作 592
20.3.5 驱动器操作 593
20.3.6 安装、开启和关闭FSO 594
20.3.7 Scripting.Dictionary对象 595
20.3.8 WScript.shell对象 596
20.3.9 注册表操作 596
20.3.10 执行应用程序 598
20.3.11 与网络进行交互 599
20.3.12 与Microsoft Word进行交互 599
20.3.13 与Microsoft Excel进行交互 601
20.3.14 小结 602
20.4 JavaScript执行安全性 603
20.5 本章小结 603
第21章 游戏编程入门与实例 604
21.1 俄罗斯方块游戏 604
21.1.1 游戏操作 604
21.1.2 胜负判定 604
21.2 框架文件“Russia Tetris.html” 605
21.3 脚本文件“Russia Tetris.js” 606
21.3.1 常量声明和变量设定 607
21.3.2 初始化游戏区和下一方块显示区 607
21.3.3 开始游戏和随机选择方块 608
21.3.4 消隐方块和计算当前得分 610
21.3.5 响应用户按键动作 611
21.3.6 移动当前方块 611
21.3.7 旋转当前方块为其下一状态 612
21.3.8 变换位置并判断是否到达边界 613
21.3.9 消隐满足条件的行 614
21.3.10 游戏暂停和重新开始 616
21.3.11 判断游戏是否结束 616
21.4 键盘键码值 617
21.5 本章小结 618
附录A JavaScript脚本语言关键字 619
附录B JavaScript网上资源 620
附录C 参考书 621
附录D JavaScript特效 623