第一部分 入门指南 2
第1章 Prototype与Scriptaculous入门 2
1.1 Ajax简史 2
1.1.1 史前 3
1.1.2 拓荒阶段 3
1.1.3 开拓者的到来 4
1.1.4 文明 4
1.2 什么是Prototype 4
1.2.1 JavaScript的语言特性 5
1.2.2 Web浏览器中的特性 6
1.3 什么是Scriptaculous 7
1.3.1 视觉特效 7
1.3.2 拖放 7
1.3.3 组件 8
1.3.4 实用工具与测试框架 8
1.4 应用Prototype与Scriptaculous 8
1.4.1 评分示例分析 9
1.4.2 使用Prototype与Scriptaculous 13
1.5 小结 18
第2章 QuickGallery简介 19
2.1 设计与实现 19
2.1.1 应用程序的需求 19
2.1.2 导航文件系统 20
2.1.3 生成缩略图 23
2.1.4 组装 24
2.1.5 创建HTML 27
2.2 评估传统的Web应用程序 30
2.2.1 链接、表单与整页刷新 30
2.2.2 传统Web应用与QuickGallery 31
2.3 小结 32
第3章 使用Prototype简化Ajax 33
3.1 为Ajax重设计 33
3.1.1 设计异步请求 34
3.1.2 Prototype的Ajax类 35
3.2 使用XML与Ajax 39
3.2.1 设计XML响应 40
3.2.2 修改服务器端代码 40
3.2.3 编写客户端代码 42
3.3 使用JSON与Ajax 48
3.3.1 修改服务器端代码 48
3.3.2 修改客户端代码 49
3.4 小结 50
第4章 使用Prototype的高级Ajax特性 51
4.1 Prototype的高级Ajax类 51
4.1.1 Ajax.Updater 51
4.1.2 Ajax.PeriodicalUpdater 52
4.1.3 Ajax.Responders 53
4.2 使用HTML与Ajax 53
4.2.1 生成HTML片段 53
4.2.2 修改客户端代码 54
4.2.3 更新多个DOM元素 55
4.2.4 自动更新内容 59
4.3 比较以数据为中心的Ajax和以内容为中心的Ajax 61
4.3.1 考虑开发的难易程度 61
4.3.2 适应工具之道 62
4.3.3 比较性能 62
4.3.4 寻求向前兼容的解决方案 66
4.4 小结 66
第二部分 Scriptaculous快速入门第5章 Scriptaculous特效 70
5.1 快速见效:一行代码即可添加特效 70
5.2 配置Scriptaculous与示例 72
5.2.1 获取Scriptaculous 72
5.2.2 加载Scriptaculous库 73
5.3 Scriptaculous特效的分类 74
5.4 特效 74
5.4.1 特效实验室 75
5.4.2 常见的特效选项 76
5.4.3 核心特效 77
5.4.4 组合特效 81
5.5 简单切换显示与隐藏特效 83
5.5.1 Effect.toggle()工具函数 84
5.5.2 Toggle Pane小部件 84
5.6 使用过渡效果 88
5.6.1 使用内建过渡效果 89
5.6.2 Transition Mapper简介 90
5.6.3 创建自己的过渡效果 91
5.7 在特效过程中进行控制 93
5.8 中止特效 94
5.9 控制多个特效 95
5.9.1 执行同步特效 95
5.9.2 执行序列特效 95
5.10 小结 98
第6章 Scriptaculous控件 99
6.1 使用本章的示例程序 99
6.2 就地文本编辑器 100
6.2.1 创建就地文本编辑器 100
6.2.2 InPlaceEditor的选项 103
6.2.3 一些用例 108
6.3 InPlaceCollectionEditor 114
6.3.1 创建InPlaceCollectionEditor 115
6.3.2 InPlaceCollectionEditor的选项 116
6.4 Ajax自动完成控件 117
6.4.1 创建Ajax自动完成控件 118
6.4.2 Ajax.Autocompleter选项 120
6.4.3 科幻电影自动完成servlet 122
6.4.4 对选项菜单的修饰 126
6.5 Scriptaculous的本地自动完成 127
6.5.1 创建一个本地自动完成 128
6.5.2 Autocompleter.Local的选项 129
6.6 滑块控件 131
6.6.1 创建滑块控件 132
6.6.2 在滑块中使用图片 134
6.6.3 Control.Slider的选项 136
6.6.4 一个更有趣的示例 139
6.7 小结 142
第7章 Scriptaculous拖放 144
7.1 本章的示例代码 145
7.2 把东西拖起来 146
7.2.1 让一个元素可被拖动 146
7.2.2 Draggable的选项 148
7.3 把拖着的东西放下去 153
7.3.1 定义投放目标 153
7.3.2 投放目标的选项 153
7.3.3 拖放示例 157
7.4 使用拖放进行排序 161
7.4.1 创建一个可排序元素 161
7.4.2 可排序元素的选项 163
7.4.3 序列化可排序元素 172
7.5 小结 176
第三部分 Prototype深度研究 178
第8章 与Object有关的一切 178
8.1 引入Scratchpad应用程序 178
8.2 Object类型 180
8.2.1 创建一个Object 180
8.2.2 使用原型定义对象类型 183
8.2.3 对象的反射 185
8.3 对象与Prototype 187
8.3.1 使用Class.create()简化构造函数 187
8.3.2 使用Object.extend()声明对象层次结构 188
8.3.3 简单的对象合并 188
8.3.4 对象层次结构建模 191
8.4 小结 197
第9章 Function的乐趣 198
9.1 JavaScript函数 198
9.1.1 声明函数 199
9.1.2 调用函数 200
9.1.3 函数的上下文 201
9.1.4 函数的闭包 203
9.1.5 何时使用上下文与闭包 204
9.2 使用Prototype.js扩展函数 206
9.2.1 bind()方法 206
9.2.2 bindAsEventListener()方法 207
9.3 小结 208
第10章 让Array变得简单 209
10.1 Array简介 209
10.2 JavaScript原生的Array 210
10.2.1 使用length迭代Array 210
10.2.2 将Array用作堆:pop()与push(),shift()与unshift() 210
10.2.3 使用slice()、splice()与concat()进行分割与修改 211
10.2.4 使用reverse()与sort()重排数组 213
10.2.5 Array与String:join()与split() 214
10.2.6 其他类似Array的对象 215
10.3 Prototype.js与Array 215
10.3.1 使用first()、last()与indexof()按位置访问元素 215
10.3.2 使用clear()、compact()、without()与flattern()修改Array 216
10.4 Enumerable对象的方法 217
10.4.1 在数组中搜索:all()、any()与include() 218
10.4.2 使用detect()、findAll()、reject()、grep()与partition()过滤数组 219
10.4.3 使用pluck()、invoke()与collect()操作复杂数组元素 222
10.4.4 使用inject()与zip()构造复杂数组元素 226
10.4.5 使用max()、min()与sortBy()进行数值排序 228
10.4.6 使用DOM集合 230
10.5 使用Hash与ObjectRange 230
10.5.1 使用Hash对象 231
10.5.2 使用ObjectRange对象 234
10.6 小结 234
第11章 回归浏览器 236
11.1 DOM方法速成班 236
11.1.1 遍历树 237
11.1.2 修改树 240
11.2 Prototype与DOM 243
11.2.1 简单的辅助函数 243
11.2.2 Element对象 245
11.2.3 Insertion对象 249
11.2.4 Position对象 250
11.3 扩展Event对象 255
11.4 使用HTML表单 256
11.5 小结 260
第四部分 高级主题 262
第12章 Prototype和Scriptaculous实践 262
12.1 QuickGallery应用程序的需求 262
12.2 建立幻灯片编辑器 263
12.2.1 修改页面布局 263
12.2.2 定义一个拖放操作策略 268
12.2.3 实现拖放操作 269
12.2.4 提供可编辑的说明文字 271
12.3 添加基于Ajax的持久存储 274
12.3.1 定义持久存储格式 274
12.3.2 保存幻灯片 274
12.3.3 从服务器读取内容 277
12.4 创建工具栏 278
12.5 构建幻灯片播放器 281
12.5.1 指定用户界面 281
12.5.2 实现幻灯片播放器 283
12.5.3 启动播放器 285
12.6 整合在一起 288
12.7 小结 301
第13章 Prototype、Scriptaculous与Rails 303
13.1 生成JavaScript 303
13.1.1 Hello World、Prototype与Rails风格 304
13.1.2 Rails的辅助函数 305
13.2 Ajax辅助函数 306
13.2.1 标准配置选项 307
13.2.2 Ajax辅助函数一览 308
13.3 Scriptaculous辅助函数 313
13.3.1 创建视觉效果 313
13.3.2 实现就地编辑器 314
13.3.3 添加自动完成功能 315
13.3.4 实现拖放 316
13.4 是否使用JavaScript 320
13.5 下一个层次:RJS 321
13.5.1 多重更新的问题 321
13.5.2 Hello from RJS 322
13.5.3 多重更新与RJS 323
13.5.4 RJS之旅 324
13.5.5 以内联方式渲染RJS 326
13.6 小结 327
附录A HTTP基础 328
附录B 监测HTTP流量 338
附录C 安装和运行Tomcat 5.5 346
附录D 安装并运行PHP 351
附录E 移植服务器端技术 360