图书介绍
JavaScript动态网页开发详解PDF|Epub|txt|kindle电子书版本网盘下载
- 杨水清等编著 著
- 出版社: 北京:电子工业出版社
- ISBN:7121056186
- 出版时间:2008
- 标注页数:629页
- 文件大小:319MB
- 文件页数:647页
- 主题词:JAVA语言-程序设计
PDF下载
下载说明
JavaScript动态网页开发详解PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一篇 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 ECMAScript16
1.8.2 DOM17
1.8.3 BOM18
1.9 客户端与服务器端脚本18
1.10 JavaScript与JScript、VBScript19
1.11 JavaScript与Java、Java Applet20
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 DOM133
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与function211
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中的XML453
15.1 XML简介453
15.1.1 什么是XML453
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 DOM458
15.2.1 XML DOM459
15.2.2 XML DOM树型结构459
15.3 Microsoft IE对XML DOM的支持460
15.3.1 创建XML DOM461
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 DOM471
15.4.2 装载471
15.4.3 读取XML文档472
15.4.4 错误处理473
1 5.5 智能XML DOM475
15.6 JavaScript中的XPath478
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,返回responseText499
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 Cookie505
16.6.1 什么是Cookie505
16.6.2 Cookie的结构506
16.6.3 建立Cookie507
16.6.4 读取Cookie507
16.6.5 删除Cookie508
16.6.6 Cookie应用实例:记录用户名和访问次数508
16.6.7 服务器端的Cookie操作511
16.6.8 客户端和服务器端的Cookie传递511
16.6.9 Cookie的安全性514
16.6.10 如何禁止Cookie514
16.7 本章小结515
第17章 JavaScript与Ajax技术516
17.1 什么是Ajax516
17.1.1 Ajax的定义516
17.1.2 Ajax的诞生与发展517
17.2 为什么需要Ajax517
17.2.1 传统的Web框架517
17.2.2 Ajax技术框架518
17.2.3 Ajax的优势519
17.3 Ajax核心技术520
17.3.1 JavaScript520
17.3.2 XMLHttpRequest520
17.3.3 DOM520
17.3.4 XML521
17.4 Ajax应用实例521
17.4.1 Google主页521
17.4.2 Google Maps522
17.5 Ajax应用场景523
17.5.1 数据验证523
17.5.2 按需读取数据524
17.5.3 自动实时更新页面524
17.6 使用Ajax524
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 IE549
18.3.2 Mozilla Firefox550
18.3.3 MacOS Safari551
18.3.4 MacOS IE551
18.3.5 Opera 7551
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 Applet569
19.2.2 Java Applet访问JavaScript脚本571
19.2.3 Java Applet安全性问题与措施574
19.3 JavaScript与Flash通信575
19.3.1 JavaScript脚本访问Flash575
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 安装、开启和关闭FSO594
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