第一篇 JavaScript基础 3
第1章 JavaScript简介 3
1.1 历史、版本与兼容性 3
1.1.1 JavaScript与ECMAScript 3
1.1.2 不同浏览器对JavaScript的支持 4
1.1.3 本书对读者知识结构的要求 4
1.2 JavaScript在HTML中的使用 5
1.2.1 在〈script〉〈/script〉中的使用 5
1.2.2 代码屏蔽 6
1.2.3 在单独文件中使用 7
1.2.4 作为属性值使用 8
1.3 JavaScript基本语法 8
1.3.1 执行顺序 8
1.3.2 大小写敏感 8
1.3.3 空白符与换行符 9
1.3.4 语句与分隔符 9
1.3.5 块 9
1.3.6 注释 10
1.4 JavaScript保留字 10
1.5 错误与调试 11
1.5.1 语法错误 11
1.5.2 逻辑错误 12
第2章 数据类型与变量 13
2.1 简单数据类型 13
2.1.1 数值型 13
2.1.2 字串型 16
2.1.3 Boolean 18
2.2 特殊数据类型 19
2.2.1 无定义数据类型(undefined) 19
2.2.2 空值(null) 19
2.3 变量 20
2.3.1 类型规则 20
2.3.2 声明变量 20
2.3.3 变量命名 20
2.3.4 作用范围 21
2.3.5 基本类型与合成类型 22
2.3.6 无用存储单元的收集 23
2.3.7 作为属性的变量 24
2.4 类型转换 24
2.4.1 转换规则 24
2.4.2 提升基本数据为对象 26
2.4.3 显式类型转换 26
2.5 使用值与使用引用 26
2.5.1 使用值操作数据 27
2.5.2 使用引用操作数据 27
2.5.3 原始类型与引用类型 27
2.5.4 举例 28
2.5.5 字符串的特殊性 29
第3章 运算符与表达式 31
3.1 表达式 31
3.2 算术运算符 32
3.2.1 加号(+)的特殊含义 32
3.2.2 减号(-)的特殊含义 34
3.3 赋值运算符 34
3.4 比较运算符 35
3.4.1 条件语句中使用=符号 35
3.4.2 比较运算符的自动转换 36
3.5 逻辑运算符 36
3.6 位运算符 37
3.6.1 普通位运算符 37
3.6.2 位移运算符 38
3.7 其他运算符 38
3.7.1 递增与递减运算符 38
3.7.2 算术运算符与位运算符的结合使用 39
3.7.3 ?:运算符 39
3.7.4 字符串比较 39
3.7.5 逗号(,)运算符 40
3.7.6 void运算符 40
3.7.7 typeof运算符 41
3.7.8 对象运算符 41
3.8 运算符优先级 42
第4章 基本的流程控制语句 45
4.1 条件判断语句:if语句 45
4.1.1 简单if语句 45
4.1.2 if...else语句 46
4.1.3 else if语句 47
4.1.4 if语句的嵌套 48
4.2 条件判断语句:switch语句 49
4.3 循环控制语句 50
4.3.1 while循环 50
4.3.2 do...while循环 51
4.3.3 for循环 52
4.3.4 循环控制:continue与break语句 54
第5章 函数 55
5.1 函数的定义与调用 55
5.1.1 定义函数 55
5.1.2 函数调用 56
5.2 全局变量与局部变量 58
5.3 参数变量可变的函数 59
5.4 创建动态函数 60
5.5 JavaScript的系统函数 60
5.5.1 URI编码处理函数 61
5.5.2 数值处理函数 62
5.5.3 字符串编码处理函数 63
5.6 Function构造函数与函数直接量 65
第6章 JavaScript对象与数组 67
6.1 JavaScript对象 67
6.1.1 对象的创建 67
6.1.2 对象的方法 69
6.1.3 原型对象和继承 69
6.1.4 面向对象的JavaScript 70
6.1.5 构造函数与this关键字 71
6.2 JavaScript中的数组 72
6.2.1 数组和数组元素 72
6.2.2 用对象的方式实现数组 75
6.2.3 Array对象及其属性与方法 77
6.2.4 作为关联数组的对象 79
6.3 JavaScript内部对象 80
6.3.1 Object对象 80
6.3.2 String对象 80
6.3.3 Date对象 84
6.3.4 toString方法 85
6.4 专门用于对象的语句 86
6.4.1 with语句 86
6.4.2 for...in语句 87
第7章 字符串与数值处理对象 89
7.1 字符串对象 89
7.1.1 字符串和数值数据类型 89
7.1.2 URL字符串编码和译码 91
7.2 数值处理对象 92
7.2.1 JavaScript中的数值 92
7.2.2 Math对象 94
7.2.3 Number对象 96
7.2.4 Boolean对象 98
第8章 正则表达式 99
8.1 正则表达式及其作用 99
8.2 元字符“?”与“()” 99
8.2.1 用?表示可选项 99
8.2.2 用()表示子匹配 100
8.3 RegExp对象 100
8.4 RegExp对象的属性 101
8.4.1 静态属性 101
8.4.2 实例属性 102
8.5 RegExp对象的方法 102
8.5.1 test方法 102
8.5.2 exec方法 103
8.5.3 compile方法 104
8.5.4 综合举例 104
8.6 String对象中的相关方法 105
8.6.1 match方法 105
8.6.2 search方法 106
8.6.3 replace方法 107
8.6.4 split方法 107
8.7 限定符与选择匹配符 108
8.7.1 用限定符指定连续出现的次数 108
8.7.2 贪婪匹配与非贪婪匹配 109
8.7.3 用选择匹配符进行匹配选择 109
8.8 分组组合与反向引用符 109
8.8.1 分组组合 109
8.8.2 反向引用 110
8.8.3 非捕获匹配 110
8.8.4 正向“预测先行”匹配 110
8.8.5 反向“预测先行”匹配 110
8.9 特殊字符与字符匹配符 111
8.9.1 特殊字符 111
8.9.2 字符匹配符 111
8.10 定位符与原义字符 113
8.10.1 用于文本验证的定位符 113
8.10.2 对特殊字符进行转义 116
8.11 实用举例 116
8.11.1 普通字符匹配 116
8.11.2 限制表单输入的内容 117
8.11.3 去除重复字符 117
8.11.4 从URL中提取文件名 117
8.11.5 匹配IP地址 118
第二篇 JavaScript核心技术 121
第9章 事件处理 121
9.1 事件与事件处理概述 121
9.1.1 事件与事件名称 121
9.1.2 事件应用 121
9.2 基本事件模型 122
9.2.1 XHTML中的事件绑定 122
9.2.2 使用JavaScript绑定事件处理器 127
9.2.3 事件处理器的作用域 128
9.2.4 事件处理器的返回值 129
9.2.5 手动触发事件 130
9.3 IE 4+事件模型 133
9.3.1 绑定处理器至对象 133
9.3.2 Event对象 134
9.3.3 事件流 135
9.4 DOM2事件模型 136
9.4.1 绑定处理器至对象 136
9.4.2 Event对象 137
9.4.3 鼠标事件 137
9.4.4 取消默认动作 139
9.4.5 创建事件 140
第10章 键盘和鼠标事件处理 143
10.1 鼠标事件处理 143
10.1.1 在Netscape浏览器中使用鼠标事件 143
10.1.2 在IE浏览器中使用鼠标事件 144
10.1.3 页面布局 145
10.1.4 处理MouseDown和MouseUp事件 145
10.1.5 确定用户在使用哪一种浏览器 145
10.2 页面预览 151
10.3 图像切换 154
10.4 接收键盘输入 155
10.4.1 使用keyPress事件 155
10.4.2 在Netscape浏览器中读取按键 156
10.4.3 在IE浏览器中读取按键 156
10.5 用鼠标点亮文本 158
10.6 鼠标跟随 161
10.6.1 图片跟随鼠标 162
10.6.2 文字跟随鼠标 164
10.6.3 星星跟随鼠标 166
10.7 鼠标感应 170
10.7.1 弹出警告框 170
10.7.2 渐显图片 171
10.8 禁用鼠标右键 172
第11章 对象模型 175
11.1 对象模型的概念 175
11.1.1 对象模型概述 175
11.1.2 初始对象模型 175
11.2 Document对象简介 177
11.2.1 Document对象的属性与方法 177
11.2.2 属性与方法的应用 178
11.2.3 文档元素的按位置访问 180
11.2.4 文档元素的按名称访问 181
11.2.5 事件控制器 181
11.3 组合应用 182
11.4 动态修改表单元素内容 183
第12章 文档对象模型(DOM) 187
12.1 DOM概述 187
12.1.1 DOM分层 187
12.1.2 Document树 187
12.2 访问元素 189
12.2.1 使用元素标识 189
12.2.2 DOM结点属性 190
12.2.3 相邻结点检测 192
12.2.4 文档树检测示例 192
12.3 结点 194
12.3.1 创建 194
12.3.2 插入和追加 195
12.3.3 结点复制 197
12.3.4 删除与替换 198
12.3.5 修改 199
12.4 属性 201
12.4.1 属性使用 201
12.4.2 DOM与HTML元素 202
12.4.3 DOM遍历API 205
12.4.4 DOM Range选择 206
12.5 与DHTML相对的DOM 207
12.5.1 innerHTML属性 208
12.5.2 其他类似属性 209
12.5.3 document.all[] 210
第13章 样式与定位 213
13.1 网页对象模型与网页元素对象 213
13.1.1 HTML对象模型方法 213
13.1.2 DHTML对象模型方法 214
13.1.3 W3C对象模型方法 217
13.2 动态网页样式 220
13.2.1 样式表简介 220
13.2.2 样式的语法规则 220
13.2.3 层叠式应用规则 221
13.2.4 改变元素对象的样式属性 221
13.2.5 改变网页样式表 222
13.3 网页对象动态定位 222
13.3.1 绝对位置与相对位置 223
13.3.2 用z-index设置网页元素顺序 224
13.3.3 坐标位置及尺寸 224
13.3.4 控制网页元素对象的显示与隐藏 225
13.4 构建跨浏览器DHTML库 225
第14章 Window对象 231
14.1 对话框(Dialog) 231
14.1.1 警告(Alert) 231
14.1.2 确认(Confirm) 232
14.1.3 举例 233
14.1.4 提示(Prompts) 234
14.2 窗口的打开与关闭 236
14.2.1 打开窗口 236
14.2.2 关闭窗口 237
14.2.3 窗口特征 238
14.2.4 窗口写入 240
14.2.5 DOM方法与窗口 242
14.3 控制窗口 244
14.3.1 移动窗口 244
14.3.2 改变窗口大小 245
14.3.3 窗口滚动 245
14.3.4 设置窗口定位 247
14.3.5 访问窗口历史 247
14.3.6 控制窗口状态栏 248
14.3.7 窗口时间与超时设定 249
14.4 窗口事件 250
14.4.1 通用窗口事件 251
14.4.2 扩展窗口事件 251
14.5 IE浏览器窗口扩展 252
14.5.1 模式窗口 252
14.5.2 无模式窗口 253
14.5.3 弹出窗口 253
14.5.4 举例 253
14.5.5 全屏窗口 255
第15章 Frame对象 257
15.1 特殊的窗口 257
15.1.1 使用框架 257
15.1.2 访问框架中的窗口 258
15.1.3 对框架赋值 260
15.2 内联框架 261
15.3 框架的嵌套应用 262
15.3.1 框架嵌套 262
15.3.2 noframes 263
15.3.3 命名框架 264
15.3.4 框架交叉通信 264
15.3.5 嵌套框架交叉通信 266
15.4 框架应用 268
15.4.1 装入框架 268
15.4.2 取消框架 269
15.4.3 框架组装 269
15.5 用框架进行状态管理 270
第16章 处理文档(Document) 273
16.1 早期文档处理 273
16.1.1 文档颜色 273
16.1.2 上次修改日期 276
16.1.3 定位与相关属性 277
16.2 基本Document方法 280
16.2.1 document.write()与document.writeln() 280
16.2.2 其他方法 282
16.3 使用Document访问传统HTML元素 283
16.3.1 锚与链接 283
16.3.2 表单聚集 285
16.3.3 表单元素聚集 285
16.3.4 图像聚集 286
16.4 DOM中的相关内容 289
16.4.1 DOM 1中的文档属性与聚集 289
16.4.2 HTMLElement的公用属性与方法 290
16.4.3 访问具体HTML元素属性 291
16.5 用DOM处理表格 294
16.5.1 HTML4中的表格 294
16.5.2 设置表格属性 297
16.5.3 操作表格元素 300
16.5.4 操作表元 302
16.6 DOM应用 305
16.6.1 改变〈div〉的内容 306
16.6.2 改变页面样式 306
第17章 表单和表单元素 309
17.1 表单基础 309
17.1.1 表单元素 309
17.1.2 访问表单 310
17.1.3 访问表单域 310
17.2 表单域 312
17.2.1 Input元素属性 312
17.2.2 按钮 312
17.2.3 图像按钮 314
17.2.4 无显著特征的按钮 314
17.2.5 文本域与文本区 315
17.2.6 复选框与单选按钮 320
17.2.7 文件上传域 322
17.3 表单验证 322
17.3.1 概述 322
17.3.2 编写验证表单 325
17.3.3 混合表单验证 327
17.3.4 通过隐藏域验证表单 331
17.3.5 onchange事件 331
17.3.6 按键屏蔽 332
17.4 表单可用性与JavaScript 333
17.4.1 起始焦点域 333
17.4.2 标签与域选择 333
17.4.3 状态信息 334
17.4.4 屏蔽域 334
17.5 动态表单 335
第18章 复选框和单选按钮 339
18.1 复选框 339
18.1.1 设计思路 339
18.1.2 完整代码 340
18.2 单选按钮 341
18.2.1 设计思路 341
18.2.2 完整代码 342
18.3 复选框与单选按钮的组合使用 344
18.3.1 设计思路 344
18.3.2 完整代码 347
18.4 使用elements[]数组 350
18.4.1 设计步骤 350
18.4.2 完整代码 351
18.5 选择控件 354
18.5.1 单项选择控件 354
18.5.2 多项选择控件 355
18.5.3 级联选择控件 358
第19章 设置菜单 361
19.1 下拉菜单 361
19.1.1 基本应用 361
19.1.2 改进 363
19.1.3 渐显效果 365
19.2 DHTML菜单 368
19.2.1 模拟系统菜单 368
19.2.2 远程控制菜单 370
19.2.3 滑动菜单 373
19.3 常见菜单样式举例 376
19.3.1 弹出式菜单 376
19.3.2 浮动菜单 378
19.3.3 树型导航式菜单 380
第20章 浏览器与性能检测 385
20.1 浏览器检测 385
20.1.1 用于浏览器的Navigator对象 385
20.1.2 检测初步 386
20.2 检测内容 387
20.2.1 JavaScript检测 387
20.2.2 JavaScript版本检测 389
20.2.3 JavaScript对象检测 389
20.2.4 Java检测 390
20.2.5 插件检测 390
20.2.6 语言检测 391
20.3 用于可视化检测的Screen对象 391
20.3.1 获取浏览器窗口大小 392
20.3.2 设置屏幕对象的尺寸 393
20.3.3 有选择地显示图片 394
20.4 高级检测技术:示例代码 395
20.5 浏览器控制:浏览器按键模拟 396
20.6 个性设置:指定主页 397
第21章 使用Cookie保存状态 399
21.1 Cookie概述 399
21.2 在JavaScript中使用Cookie 400
21.2.1 Cookie设置 400
21.2.2 Cookie读取 401
21.2.3 Cookie分析 401
21.2.4 删除Cookie 402
21.2.5 安全问题 403
21.3 管理用户状态 403
21.3.1 重定向 403
21.3.2 弹出窗口 404
21.3.3 用Cookie保存定制样式 404
21.4 IE浏览器状态扩展 406
第22章 图像处理 409
22.1 通过单击按钮来改变图像 409
22.2 彩色页面 410
22.2.1 使用Image对象 410
22.2.2 使用images[]数组 411
22.3 IE浏览器中的结构化图形控件 414
22.3.1 属性 414
22.3.2 方法 415
22.3.3 事件 415
22.3.4 设置画笔颜色 416
22.3.5 画矩形 416
22.3.6 画椭圆 417
22.3.7 画扇形 417
22.3.8 完整的实例代码 417
22.4 在Web页面中定位图像 418
22.5 在IE浏览器中拖动图像 419
22.5.1 MouseMove事件 420
22.5.2 取消系统拖动事件 420
22.6 通用翻转代码 421
22.7 应用举例 423
22.7.1 跟随屏幕移动的图片 423
22.7.2 图像滚动公告板 426
22.7.3 左右移动的图片 429
22.7.4 图片的渐隐渐显 430
22.7.5 不停闪烁的图片 433
22.7.6 图片倒映 434
第23章 动画 437
23.1 应用DHTML 437
23.1.1 简单过渡 437
23.1.2 目标翻转 441
23.1.3 普通动画 442
23.2 随机发生器 446
23.3 使用IE浏览器的DirectAnimation 447
23.3.1 PixelLibrary库和MeterLibrary库 448
23.3.2 使用画板 448
23.3.3 创建平移 449
23.3.4 创建旋转 450
23.3.5 完整代码 451
23.4 Sequencer控件 453
23.4.1 事件与方法 453
23.4.2 创建动画 453
23.4.3 完整代码 454
23.5 Path控件 456
23.5.1 属性、方法与事件 456
23.5.2 创建动画 457
23.5.3 完整代码 458
23.6 应用实例 459
23.6.1 永远居中的背景图片 459
23.6.2 随机显示的背景图片 460
23.6.3 垂直滚动公告板 461
23.6.4 类似Flash的字幕效果 464
23.6.5 地震效果 465
第三篇 JavaScript高级技术 469
第24章 嵌入式对象 469
24.1 Java Applet 469
24.1.1 IE浏览器中的Java Applet 469
24.1.2 在HTML中引用Java Applet 469
24.1.3 archive属性 470
24.1.4 codebase属性 470
24.1.5 alt属性 470
24.1.6 name属性 470
24.1.7 在JavaScript中访问Java Applet 470
24.1.8 Java检测 471
24.2 插件技术 473
24.2.1 插件简介 473
24.2.2 使用插件 473
24.2.3 MIME类型 474
24.2.4 检测特殊插件 477
24.2.5 实现插件交互 478
24.3 ActiveX控件 481
24.3.1 在XHTML中的使用 481
24.3.2 使代码兼容多种浏览器 481
24.3.3 用ActiveX控件实现交互 482
第25章 远程JavaScript 485
25.1 单向通信 485
25.1.1 概述 485
25.1.2 创建Image对象 485
25.1.3 重定向 486
25.2 双向通信 487
25.2.1 Image对象的不同 487
25.2.2 线程 488
25.2.3 用Cookie替代Image 488
25.2.4 动态内容 489
25.2.5 服务端计算 491
25.2.6 回收 492
25.2.7 嵌入式框架(iframe)示例 493
25.3 XMLHTTP对象 494
25.3.1 属性与方法 495
25.3.2 创建与发送请求 495
25.3.3 POST 496
第26章 JavaScript与XML 497
26.1 XML概述 497
26.1.1 XML规范性 497
26.1.2 XML有效性 499
26.2 显示XML 500
26.2.1 使用XSLT将XML转换为HTML 500
26.2.2 使用CSS显示XML文档 504
26.2.3 XML与XHTML的结合 505
26.3 DOM与XML 507
26.3.1 Internet Explorer 507
26.3.2 Mozilla 510
26.4 IE XML数据岛 513
26.4.1 格式化输出 513
26.4.2 动态增删记录 514
26.5 一个RSS阅读器的例子 516
第27章 JavaScript的安全 521
27.1 同源策略 521
27.1.1 同源检测 521
27.1.2 嵌入式文档 522
27.1.3 外部脚本 522
27.1.4 例外 523
27.1.5 问题 523
27.2 结构化安全规则 524
27.2.1 Mozilla安全规则 524
27.2.2 Internet Explorer中的安全设置 525
27.2.3 ActiveX控件 527
27.3 浏览器使用JavaScript的安全问题 527
27.3.1 轰炸 527
27.3.2 欺骗 528
27.4 跨站点脚本 529
27.4.1 潜在的威胁 529
27.4.2 预防 530
第四篇 JavaScript典型应用 533
第28章 常用特效设计 533
28.1 日期时间设计 533
28.1.1 显示当前时间 533
28.1.2 显示当前日期和星期 535
28.1.3 同时显示日期、时间和星期 536
28.1.4 分时段问候 537
28.1.5 以数字图片来显示时间 539
28.1.6 显示世界不同地区的当前时间 542
28.1.7 总是悬浮的时钟 546
28.2 计算器设计 549
28.2.1 简单的加减乘除运算 549
28.2.2 能进行四则混合运算的计算器 552
28.3 文字效果设计 554
28.4 随机显示的图片 557
28.4.1 随页面刷新更换页面背景 557
28.4.2 随页面刷新显示不同图片 558
第29章 综合应用举例 561
29.1 递归 561
29.1.1 原理 561
29.1.2 汉诺塔问题求解 562
29.2 页面广告代码设计 565
29.2.1 位置固定的对联广告 565
29.2.2 随页面滚动的对联广告 567
29.2.3 循环滚动的多幅广告 571
29.3 与Ajax结合实现级联选择 575
29.3.1 JavaScript的实现 575
29.3.2 用Ajax的实现 579
第30章 与ASP的结合开发留言板 587
30.1 结构与功能实现 587
30.1.1 控制留言长度 587
30.1.2 控制留言字体 588
30.2 数据库设计 589
30.2.1 设置管理信息表 589
30.2.2 设置留言信息表 589
30.2.3 连接数据库 590
30.3 后台管理 590
30.3.1 管理员登录 590
30.3.2 管理员管理 592
30.3.3 基本设置管理 595
30.4 填写留言 597
30.4.1 用户信息输入 599
30.4.2 控制留言长度 600
30.4.3 留言内容过滤 602
30.4.4 控制文本属性 602
30.5 显示留言 605
30.5.1 页面控制 605
30.5.2 显示用户信息 606
30.5.3 显示留言内容 607
30.6 留言管理 609
30.6.1 修改与回复 609
30.6.2 删除留言 611
30.6.3 显示用户IP 611
30.7 程序运行 612