1.1 什么是Ajax 3
1.1.1 Ajax的含义 3
第1部分 Ajax入门 3
第1章 Ajax概述 3
1.1.3 使用Ajax能做什么 4
1.1.2 Ajax的发展历史 4
1.2.1 传统的Web开发模式 7
1.2 Ajax:新的Web开发模式 7
1.2.3 两种开发模式的比较 9
1.2.2 基于Ajax的开发模式 9
1.3.2 XMLHttpRequest对象 11
1.3.1 JavaScript脚本语言 11
1.3 Ajax中的关键技术 11
1.3.5 级联样式表技术(CSS) 12
1.3.4 文档对象模型(DOM) 12
1.3.3 可扩展标记语言(XML) 12
1.4 使用Ajax带来的问题 13
1.4.3 前进后退按钮的失效 14
1.4.2 对搜索引擎的不友好 14
1.4.1 用户浏览习惯改变带来的问题 14
1.4.6 开发难度的加大 16
1.4.5 性能问题 16
1.4.4 刷新定位问题 16
2.1.1 环境设置 18
2.1 环境设置、需求分析及数据库设计 18
第2章 创建第一个Ajax应用:留言板 18
2.1.2 留言板的需求分析 20
2.2.1 设计留言显示页面 21
2.2 使用传统的Web开发方式 21
2.1.3 数据库设计 21
2.2.2 设计留言提交页面 23
2.2.3 服务器端程序设计 24
2.3 使用Ajax实现留言板 26
2.3.3 服务器端程序设计 27
2.3.2 客户端页面设计 27
2.3.1 一个页面就是一个程序 27
2.3.4 使用XMLHttpRequest将数据提交到服务器 29
2.3.6 将留言内容立刻显示在页面 31
2.3.5 处理服务器返回的信息 31
3.1.2 JavaScript版本介绍 39
3.1.1 JavaScript简介 39
第2部分 JavaSCript精讲 39
第3章 JavaScript语言基础 39
3.1 JavaScript概述 39
3.1.3 JavaScript在Ajax中的作用 40
3.2.2 使用浏览器调试JavaScript程序 42
3.2.1 用什么编写JavaScript程序 42
3.2 JavaScript编辑和调试工具 42
3.2.3 使用Venkman调试JavaScript程序 44
3.3.1 〈script〉标记:标识语言类型 45
3.3 如何在HTML中工作 45
3.3.2 使用外部JavaScript文件 46
3.4.1 变量 47
3.4 建立JavaScript表达式 47
3.3.3 嵌入HTML标记的JavaScript代码 47
3.4.2 常量 48
3.4.3 数据类型 49
3.4.4 数据类型的转换 51
3.4.5 JavaScript的语句结构 53
3.4.6 可选的分号 54
3.4.7 加入注释 55
3.4.9 建立数字表达式 56
3.4.8 建立赋值表达式 56
3.4.10 使用字符串表达式 57
3.4.11 使用比较表达式 58
3.4.12 使用逻辑表达式 60
3.4.14 理解操作符的优先级 62
3.4.13 使用逗号(,)表达式 62
4.1.1 使用if语句进行条件判断 64
4.1 代码流程控制:条件语句和循环语句 64
第4章 流程控制和函数 64
4.1.2 使用if...else...处理条件不成立的情形 65
4.1.4 使用switch语句进行多重条件判断 66
4.1.3 使用条件运算符(?:) 66
4.1.5 使用while循环 68
4.1.7 使用for循环 69
4.1.6 使用do...while循环 69
4.1.8 break语句:立即跳出循环的执行 70
4.1.9 continue语句:停止当前循环进入下一次循环 71
4.2.2 定义和调用函数 72
4.2.1 什么是函数 72
4.2 使用函数 72
4.2.3 给函数传递参数 74
4.2.4 参数的值传递和引用传递 75
4.2.5 使用return语句从函数返回值 76
4.2.6 变量的作用范围:局部变量和全局变量 77
4.2.7 使用递归函数 78
4.3.2 使用eval函数来执行JavaScript代码 79
4.3.1 什么是内部函数 79
4.3 使用JavaScript内部函数 79
4.3.3 使用parseInt和parseFloat函数将字符串转换为数字 80
4.3.5 使用isNaN和isFinite函数判断数字的类型 81
4.3.4 使用escape和unescape函数进行URL编码和解码 81
5.2.1 创建一个日期对象 82
5.2 处理日期和时间:Date对象 82
第5章 对象和表单 82
5.1 对象概述 82
5.2.2 从Date对象中提取信息 83
5.2.4 进行日期计算 85
5.2.3 设置日期对象的值 85
5.2.5 其他Date对象的方法 86
5.3 进行数学运算:Math对象 87
5.3.1 将一个小数四舍五入到指定位数 88
5.3.2 使用随机函数Math.random() 89
5.4.1 创建一个数组 90
5.4 使用数组:Array对象 90
5.4.2 使用数组元素 91
5.4.4 使用数组的length属性 92
5.4.3 使用多维数组 92
5.4.5 使用数组对象的方法 94
5.5 处理文本:String对象 95
5.5.2 搜索和提取子字符串 96
5.5.1 确定字符串的长度 96
5.5.3 替换和匹配字符串 97
5.6.1 获取浏览器信息:使用navigator对象 98
5.6 对象的高级应用 98
5.5.4 字符串对象的其他方法 98
5.6.2 处理地址栏信息:location对象 100
5.6.4 文档操作初步:document对象 102
5.6.3 控制前进和后退:使用history对象 102
5.6.5 使用with()语句简化对象访问 106
5.7.2 使用HTML标记创建事件处理程序 107
5.7.1 什么是事件 107
5.7 事件机制 107
5.7.3 使用对象的事件属性创建事件处理程序 108
5.7.5 使用event对象获取事件信息 109
5.7.4 使用attachEvent和addEventListener方法绑定事件处理程序 109
5.7.6 使用event对象的属性 111
5.8.1 使用form对象 112
5.8 表单编程入门 112
5.8.3 表单域的通用属性 114
5.8.2 引用表单域 114
5.8.4 表单域的通用方法 115
5.8.5 表单域的通用事件 116
5.9 使用文本域 117
5.9.2 使用defaultValue获得HTML标记中的value值 118
5.9.1 获取和设置文本域的内容 118
5.10.2 使用复选框 119
5.10.1 使用简单按钮 119
5.9.3 使用select方法选中文本 119
5.9.4 使用onselect事件处理用户的选中操作 119
5.10 使用按钮类表单 119
5.11 使用下拉列表框 121
5.10.3 使用单选按钮 121
5.11.4 使用options属性获取选项集合 122
5.11.3 使用selectedIndex属性获取当前选项的索引 122
5.11.1 使用value属性获取和设置下拉列表框的值 122
5.11.2 使用length属性获取选项的个数 122
5.11.7 使用select对象的onchange事件 123
5.11.6 使用option对象的selected属性 123
5.11.5 使用option对象的value属性和text属性 123
5.11.10 清空一个select对象 124
5.11.9 从select对象中删除一个选项 124
5.11.8 为select对象添加一个选项 124
3.10.12 下拉框实例:二级联动的下拉列表菜单 125
5.11.11 替换一个选项 125
5.12 执行表单验证 127
6.1.2 使用new操作符获得一个类的实例 129
6.1.1 用定义函数的方式定义类 129
第6章 JavaScript面向对象程序设计 129
6.1 JavaScript中支持面向对象的基础 129
6.1.3 使用方括号([])引用对象的属性和方法 130
6.1.4 动态添加、修改、删除对象的属性和方法 132
6.1.5 使用大括号({})语法创建无类型对象 133
6.1.6 prototype原型对象 134
6.2.2 认识函数对象(Function Object) 135
6.2.1 概述 135
6.2 深入认识JavaScript中的函数 135
6.2.3 函数对象和其他内部对象的关系 137
6.2.5 传递给函数的隐含参数:arguments 139
6.2.4 将函数作为参数传递 139
6.2.6 函数的apply、call方法和length属性 140
6.2.7 深入认识JavaScript中的this指针 141
6.3.1 理解类的实现机制 142
6.3 类的实现 142
6.3.2 使用prototype对象定义类成员 143
6.3.3 一种JavaScript类的设计模式 145
6.4.2 实现类的私有成员 146
6.4.1 实现类的公有成员 146
6.4 公有成员、私有成员和静态成员 146
6.4.3 实现静态成员 147
6.5.1 什么是反射机制 148
6.5 使用for(...in...)实现反射机制 148
6.5.3 使用反射来传递样式参数 149
6.5.2 在JavaScript中利用for(...in...)语句实现反射 149
6.6.1 利用共享prototype实现继承 150
6.6 类的继承 150
6.6.2 利用反射机制和prototype实现继承 152
6.6.3 prototype-1.3.1框架中的类继承实现机制 154
6.7.2 在JavaScript实现抽象类 156
6.7.1 抽象类和虚函数 156
6.7 实现抽象类 156
6.7.3 使用抽象类的示例 157
6.8.2 最简单的事件设计模式 158
6.8.1 事件设计概述 158
6.8 事件设计模式 158
6.8.3 给事件处理程序传递参数 159
6.8.4 使自定义事件支持多绑定 162
6.9.3 实现设置Cookie的方法 163
6.9.2 创建Cookie对象 163
6.9 实例:使用面向对象思想处理cookie 163
6.9.1 需求分析 163
6.9.5 实现删除Cookie的方法 164
6.9.4 实现取Cookie值的方法 164
7.1.2 框架间的互相引用 166
7.1.1 框架编程概述 166
第7章 JavaScript高级技术 166
7.1 框架编程 166
7.1.3 改变框架的载入页面 167
7.1.4 引用其他框架内的JavaScript变量和函数 168
7.2.1 cookie概述 169
7.2 使用cookie 169
7.2.2 设置cookie 170
7.2.3 获取cookie的值 171
7.2.4 给cookie设置终止日期 172
7.2.7 指定可访问cookie的主机名 173
7.2.6 指定可访问cookie的路径 173
7.2.5 删除cookie 173
7.2.8 综合示例:构造通用的cookie处理函数 174
7.3.1 正则表达式概述 175
7.3 使用正则表达式 175
7.3.2 使用RegExp对象执行字符串模式匹配 177
7.3.3 提取子字符串 178
7.3.4 和字符串相关的操作 179
7.4.1 使用window.open方法新建窗口 180
7.4 使用window对象 180
7.4.2 使用定时器实现JavaScript的延期执行或重复执行 181
7.4.3 给定时器调用传递参数 184
7.4.4 使用status和defaultStatus属性改变状态栏信息 185
7.4.5 使用alert、prompt和confirm语句与用户进行交互 186
7.5.2 使用try-catch-finally处理异常 187
7.5.1 异常处理概述 187
7.5 异常处理 187
7.5.3 使用throw语句抛出异常 188
8.1.2 XMLHttpRequest对象在Ajax中的作用 193
8.1.1 什么是XMLHttpRequest对象 193
第3部分 Ajax核心技术 193
第8章 XMLHttpRequest对象详解 193
8.1 概述 193
8.2.1 创建XMLHttpRequest对象 194
8.2 使用XMLHttpRequest对象和服务器进行通信 194
8.2.2 使用open方法创建一个请求 195
8.2.5 使用readyState属性判断请求状态 196
8.2.4 使用onreadystatechange事件捕获请求的状态变化 196
8.2.3 使用send方法发送一个请求 196
8.2.6 使用status属性判断请求的结果 197
8.2.7 使用responseText获得返回的文本 198
8.2.8 使用responseXML属性获取XML文档 199
8.2.9 使用abort方法取消一个请求 200
8.3.1 用get方法检测用户名是否存在 201
8.3 XMLHttpRequest对象使用示例 201
8.2.10 XMLHttpRequest对象的其他属性和方法 201
8.3.2 使用post方法向服务器提交数据 203
8.3.3 实现服务器相关的二级联动菜单 204
9.1.1 什么是DOM模型 210
9.1 概述 210
第9章 Ajax的基础架构:DOM模型 210
9.1.5 DOM模型和DHTML的关系 211
9.1.4 DOM模型的发展 211
9.1.2 DOM模型的组成部分 211
9.1.3 DOM模型在Ajax开发中的作用 211
9.2.2 结点的概念 212
9.2.1 理解DOM中的文档层次结构 212
9.1.6 小结 212
9.2 DOM结构模型 212
9.3.1 直接引用结点 213
9.3 处理DOM中的结点 213
9.2.3 结点的类型 213
9.3.2 间接引用结点 214
9.3.3 获取结点信息 215
9.3.4 处理属性结点 216
9.3.5 处理文本结点 217
9.3.6 因浏览器而异的空白结点 218
9.3.7 使用innerHTML改变结点的内容 219
9.4.3 使用appendChild方法添加结点 220
9.4.2 使用document.createTextNode方法创建文本结点 220
9.4 改变文档的层次结构 220
9.4.1 使用document.createElement方法创建元素结点 220
9.4.4 使用insertBefore方法插入子结点 221
9.4.5 使用replaceChild方法取代子结点 222
9.4.7 使用removeChild方法删除子结点 223
9.4.6 使用cloneNode方法复制结点 223
9.5.1 表格操作概述 224
9.5 表格操作 224
9.5.5 添加单元格 226
9.5.4 添加一行 226
9.5.2 DOM1(DHTML)中表格对象的结构 226
9.5.3 创建一个表格对象 226
9.5.8 删除行和单元格 228
9.5.7 使用单元格对象 228
9.5.6 引用单元格 228
9.5.9 交换两行的位置 230
9.5.10 交换两个单元格的位置 233
9.5.11 生成表格的其他方法 234
10.1.2 使用CSS的优点 235
10.1.1 什么是CSS 235
第10章 控制外观:CSS入门 235
10.1 CSS概述 235
10.1.3 CSS在Ajax开发中的作用 236
10.2.1 CSS的样式 238
10.2 使用CSS控制页面表现 238
10.2.3 使用标记选择器 240
10.2.2 CSS基本语法 240
10.2.4 使用类型选择器 241
10.2.5 使用id选择器 242
10.2.6 使用层次选择器 243
10.2.8 样式应用就近原则 244
10.2.7 继承 244
10.2.9 认识CSS中的盒模型 246
10.3.1 通过style对象改变结点的CSS 247
10.3 使用JavaScript控制CSS 247
10.2.10 设计合理的CSS结构 247
10.3.2 使用className属性指定结点样式 248
10.4.1 CSS滤镜概述 249
10.4 使用IE Only的CSS滤镜 249
10.4.2 使用界面滤镜 250
10.4.3 静态滤镜 254
10.4.4 动态滤镜 258
10.4.5 使用JavaScript控制CSS滤镜 261
11.1.1 一个简单的XML实例 263
11.1 XML概述 263
第11章 Ajax标准通信载体——XML语言 263
11.1.2 XML的基本概念 264
11.2.1 MSXML介绍 265
11.2 使用Javascript操作XML 265
11.1.3 XML在Ajax中的作用 265
11.2.2 在IE浏览器中创建XML片段 266
11.2.3 在IE浏览器中解析XML文本 267
11.2.4 使用Mozilla浏览器支持的DOM模型创建XML片段 268
11.2.5 使用Mozilla浏览器支持的DOM模型解析XML片段 269
11.2.6 基于Javascript的XML解析程序 270
11.3.3 使用HTML片段 271
11.3.2 使用纯文本 271
11.3 其他通信模式 271
11.3.1 使用XML的问题 271
11.3.4 使用JSON 272
12.1.2 Ajax中服务器端程序设计的特点 277
12.1.1 理解Ajax中的服务器端编程模式 277
第12章 服务器端编程 277
12.1 服务器端程序在Ajax中的角色 277
12.1.4 接口设计模式 278
12.1.3 参数传递方式 278
12.2.1 JSP语言介绍 280
12.2 常用服务器端编程技术介绍 280
12.2.3 ASP.NET介绍 281
12.2.2 PHP语言介绍 281
12.3.3 客户端设计:页面结构 282
12.3.2 系统描述 282
12.3 实现Ajax翻页效果 282
12.3.1 翻页 282
12.3.5 客户端设计:设计Ajax逻辑 283
12.3.4 客户端设计:页面外观 283
12.3.6 客户端设计:分页按钮 284
12.3.8 服务器端设计:设计通用的分页标签生成器 285
12.3.7 服务器端设计:通过ASP.NET控件直接得到HTML代码 285
12.3.9 服务器端设计:处理用户的查询 286
12.3.10 最终效果 290
13.1.1 JavaScript中错误信息的显示 292
13.1 跨浏览器问题 292
第13章 Ajax中的常见问题及解决方案 292
13.1.2 JavaScript中的eval函数能否使用apply方法 293
13.1.4 DOM中的事件绑定语法 295
13.1.3 DOM中使用getElementById获取指定id结点的引用 295
13.1.5 DOM中事件顺序模型的不同 296
13.1.6 CSS中使用!important提高属性优先级 298
13.1.8 在CSS中使用反斜杠注释屏蔽IE5-Mac 299
13.1.7 在CSS中使用IE浏览器不支持的属性实现浏览器选择性 299
13.2.2 利用URL存储状态信息 300
13.2.1 导航问题的由来 300
13.2 解决导航问题 300
13.2.3 利用Hash参数解决刷新问题 301
13.2.4 解决浏览器的【前进】【后退】按钮失效问题 305
13.3.1 Ajax程序不易被搜索引擎检索到 312
13.3 搜索引擎问题 312
13.4.1 服务器端始终要作有效性验证 313
13.4 安全问题 313
13.3.2 使用冗余地址思路解决搜索引擎问题 313
13.4.3 其他安全问题 315
13.4.2 避免拒绝服务攻击(DoS攻击) 315
13.5.2 因浏览器而异的字符串连接操作 316
13.5.1 衡量JavaScript代码的运行事件 316
13.5 性能问题 316
13.5.3 按需载入JavaScript代码 318
13.5.4 压缩JavaScript代码 319
14.1.1 什么是树状菜单 323
14.1 树状菜单概述 323
第4部分 典型应用 323
第14章 动态获取数据的树状菜单 323
14.1.3 使用CSS控制外观 324
14.1.2 使用无序列表标记(u1) 324
14.2.1 完全在客户端实现 326
14.2 实现树状菜单的两种方式 326
14.1.4 展开和折叠涉及的关键技术 326
14.2.2 完全由服务器端实现 327
14.3.1 设计树结点接口类 328
14.3 设计树状菜单的数据结构 328
14.2.3 基于Ajax的实现 328
14.3.2 实现树结构的数据库设计 329
14.3.3 最终树结构实现类 330
14.3.4 服务端的数据处理 333
14.3.5 静态树状菜单的实现 334
14.4.2 服务器端的代码设计 337
14.4.1 什么时候需要动态获取数据 337
14.4 动态获取数据的树状菜单 337
14.4.3 创建获取数据的方法 339
14.4.4 处理取回数据的方法 340
14.4.5 服务器端的请求处理方法 341
第15章 RSS阅读器 343
15.1.1 什么是RSS 344
15.1 RSS概述 344
15.1.2 一个简单的RSS 2.0示例 345
15.1.3 〈channel〉元素说明 346
15.2.2 客户端代码设计 347
15.2.1 客户端原理分析 347
15.1.4 〈item〉元素说明 347
15.2 阅读RSS模块程序设计 347
15.2.3 创建RSSReader类 350
15.2.4 服务器端代码设计 353
15.2.5 创建LoadRSS类 355
15.3.2 客户端代码设计 358
15.3.1 客户端原理分析 358
15.3 添加RSS模块程序设计 358
15.3.3 服务器端代码设计 360
15.3.4 数据库设计 361
16.1.1 Google Suggest介绍 365
16.1 搜索提示概述 365
第16章 搜索提示(Suggest) 365
16.1.3 基本原理分析 366
16.1.2 搜索提示所带来的好处 366
16.2.1 客户端原理分析 367
16.2 客户端代码 367
16.2.2 创建请求 368
16.2.3 处理返回数据 369
16.3.1 服务器端原理分析 370
16.3 服务器端代码 370
16.3.2 处理服务请求 371
16.3.3 数据库设计 372
17.1.1 界面设计分析 374
17.1 基本原理分析 374
第17章 基于Ajax的相册 374
17.1.2 CSS设计分析 375
17.1.3 图片放大原理分析 378
17.1.4 动态更换皮肤 379
17.2.2 创建XMLHttpRequest对象 380
17.2.1 原理分析 380
17.2 Ajax程序设计 380
17.2.3 发送请求 381
17.2.4 处理返回数据 382
17.3.1 处理服务请求 383
17.3 服务器端程序设计 383
17.3.2 创建实体访问类 385
17.3.3 数据库设计 386
第18章 基于Ajax的聊天室程序 389
18.1.2 传统聊天室的缺点 390
18.1.1 聊天室程序所需要解决的问题 390
18.1 聊天室概述 390
18.1.4 基本原理分析 391
18.1.3 使用Ajax技术的好处 391
18.2.2 数据表设计 392
18.2.1 数据库设计基本原理 392
18.2 数据库设计 392
18.2.3 创建表所对应的实体类 393
18.3.1 基本原理分析 395
18.3 客户端程序设计 395
18.3.2 选择聊天室页面 396
18.3.3 聊天室主页面 398
18.3.4 调用初始化方法 401
18.3.5 获得消息数据处理 402
18.3.6 发送消息数据处理 403
18.4.1 刷新时获得消息请求的处理 404
18.4 服务器端程序设计 404
18.4.2 发送消息请求的处理 407
18.4.3 数据库连接工具类 408
19.1.1 系统目标:模仿Google ig 411
19.1 系统概述 411
第19章 拖拽方式定制个性化主页 411
19.1.3 系统构架 412
19.1.2 系统预览 412
19.2.1 原理分析 414
19.2 用户登录模块 414
19.2.2 客户端代码 415
19.2.3 处理服务请求 416
19.2.4 服务器端代码 417
19.2.5 连接数据库 423
19.3.1 原理分析 425
19.3 小窗口初始化模块 425
19.3.3 访问数据库的实体类 426
19.3.2 数据库设计 426
19.3.4 父类代码的实现 429
19.3.5 创建欢迎小窗口 430
19.3.6 创建新闻RSS小窗口 431
19.3.7 创建书签小窗口 432
19.4.2 数据库设计 433
19.4.1 布局显示原理分析 433
19.4 个性化主页模块 433
19.4.3 创建访问数据库实体类 435
19.4.4 客户端代码 439
19.4.6 关闭窗口自动保存布局 441
19.4.5 布局设置原理分析 441
19.4.7 拖拽窗口自动保存布局 443
19.4.8 服务器端代码 446
19.5.1 拖拽原理分析 448
19.5 拖拽原理分析 448
19.5.2 释放原理分析 449
19.5.3 通用的拖放类 450
20.1.1 上传文件的表单概述 452
20.1 上传文件概述 452
第20章 上传文件显示进度条 452
20.1.2 上传文件后的服务器端处理 453
20.1.3 使用Apache的FlieUpload 455
20.2.1 客户端原理分析 456
20.2 客户端实现 456
20.1.4 使用Session记录上传进度 456
20.2.2 客户端代码 457
20.2.3 客户端请求处理 458
20.3.1 服务器端原理分析 459
20.3 服务器端实现 459
20.3.2 上传文件处理过程 460
20.3.3 获取上传信息 462
20.3.4 创建监听器类 464
20.3.5 注册监听器类 466
21.1.1 传统的分页显示 470
21.1 滑动显示分页概述 470
第21章 滑动显示分页 470
21.1.3 滑块基本原理 471
21.1.2 滑动分页显示 471
21.2.2 客户端页面代码 473
21.2.1 客户端基本原理 473
21.2 客户端实现 473
21.2.3 Javascript代码分析 475
21.3.1 服务器端请求处理 477
21.3 服务器端代码实现 477
21.3.2 创建数据实体类 479
21.3.3 数据库设计 480
21.3.4 连接数据库的工具类 481
22.1.1 Windows关机效果分析 484
22.1 基本原理分析 484
第22章 仿Windows关机效果 484
22.1.2 网页中实现关机效果分析 485
22.2.1 客户端代码 487
22.2 代码实现 487
22.2.2 客户端脚本 488
22.2.3 封装lightbox类 490
22.3 服务器端代码 492
A.2 保留字 494
A.1 关键字 494
附录A JavaScript关键字和保留字 494
B.1.1 Prototype对象 495
B.1 基础工具类 495
附录B prototype-1.4.0框架详解 495
B.1.2 Class对象 496
B.1.3 对Object类的扩展 497
B.1.4 对Function类的扩展 498
B.1.5 对Number类的扩展 499
B.2 定时器类 500
B.1.7 其他工具 500
B.1.6 Try对象 500
B.3 基础工具类 501
B.3.2 对String类(字符串)的扩展 502
B.3.1 $()方法 502
B.3.3 Enumerable(可枚举)接口 503
B.3.4 $A()函数 506
B.3.6 新的哈希(Hash)对象 507
B.3.5 对Array类(数组)的扩展 507
B.3.9 使用$R()方法快速创建ObjectRange对象 508
B.3.8 新的ObjectRange类 508
B.3.7 使用$H()函数获取Hash对象 508
B.4.2 Ajax.Responders对象 509
B.4.1 Ajax对象 509
B.4 Ajax模块 509
B.4.4 Ajax.Request类 510
B.4.3 Ajax.Base类 510
B.4.5 Ajax.Updater类 511
B.4.6 Ajax.PeriodicalUpdater类 512
B.5 对文档操作的封装 512
B.5.1 使用document.getElementsByClassName方法 512
B.5.2 Element对象 513
B.5.3 Toggle对象 514
B.5.4 Insertion命名空间 514
B.5.5 Element.ClassNames类 515
B.6 表单操作 516
B.6.1 Field对象 516
B.6.2 Form对象 516
B.6.3 Form.Element对象 516
B.6.4 Form.Element.Serializers对象 517
B.6.5 使用$F()函数获取表单域的值 517
B.7 Observer模式框架 517
B.7.1 Abstract.TimedObserver类 517
B.7.3 Form.Observer类 518
B.7.4 Abstract.EventObserver类 518
B.7.2 Form.Element.Observer类 518
B.7.6 Form.Observer类 519
B.8 事件处理:对Event对象的扩展 519
B.7.5 Form.Element.EventObserver类 519
B.9 结点的位置处理:Position对象 520