第一部分 认识现代JavaScript
第1章 现代JavaScript程序设计 2
1.1 面向对象的JavaScript 2
1.2 测试代码 3
1.3 打包分发 4
1.4 分离式DOM脚本编程 5
1.4.1 DOM 6
1.4.2 事件 7
1.4.3 JavaScript与CSS 8
1.5 Ajax 8
1.6 浏览器支持 11
1.7 小结 12
第二部分 专业JavaScript开发
第2章 面向对象的JavaScript 14
2.1 语言特性 14
2.1.1 引用 14
2.1.2 函数重载和类型检查 16
2.1.3 作用域 19
2.1.4 闭包 20
2.1.5 上下文对象 23
2.2 面向对象基础 24
2.2.1 对象 25
2.2.2 对象的创建 25
2.3 小结 30
第3章 创建可重用代码 31
3.1 标准化面向对象的代码 31
3.1.1 原型式继承 31
3.1.2 类式继承 32
3.1.3 Base库 35
3.1.4 Prototype库 36
3.2 打包 39
3.2.1 命名空间 40
3.2.2 清理代码 42
3.2.3 压缩 43
3.3 分发 45
3.4 小结 47
第4章 调试与测试的工具 48
4.1 调试 48
4.1.1 错误控制台 48
4.1.2 DOM查看器 52
4.1.3 Firebug 54
4.1.4 Venkman 55
4.2 测试 56
4.2.1 JSUnit 56
4.2.2 J3Unit 57
4.2.3 Test.Simple 58
4.3 小结 59
第三部分 分离式JavaScript
第5章 DOM 62
5.1 DOM简介 62
5.2 遍历DOM 62
5.2.1 处理DOM中的空格 64
5.2.2 简单的DOM遍历 66
5.2.3 绑定到每一个HTML元素 67
5.2.4 标准的DOM方法 68
5.3 等待HTML DOM的加载 69
5.3.1 等待整个页面的加载 70
5.3.2 等待大部分DOM的加载 70
5.3.3 判断DOM何时加载完毕 71
5.4 在HTML文档中查找元素 73
5.4.1 通过类的值查找元素 73
5.4.2 使用CSS选择器查找元素 74
5.4.3 XPath 76
5.5 获取元素的内容 77
5.5.1 获取元素内的文本 77
5.5.2 获取元素内的HTML 78
5.6 操作元素特性 79
5.7 修改DOM 82
5.7.1 使用DOM创建节点 83
5.7.2 插入到DOM中 83
5.7.3 注入HTML到DOM 85
5.7.4 删除DOM节点 87
5.8 小结 88
第6章 事件 89
6.1 JavaScript事件简介 89
6.1.1 异步事件与线程 89
6.1.2 事件阶段 91
6.2 常见事件特性 93
6.2.1 事件对象 93
6.2.2 this关键字 93
6.2.3 取消事件冒泡 94
6.2.4 重载浏览器的默认行为 95
6.3 绑定事件监听函数 97
6.3.1 传统绑定 98
6.3.2 DOM绑定:W3C 99
6.3.3 DOM绑定:IE 100
6.3.4 addEvent和removeEvent 100
6.4 事件类型 103
6.5 分离式脚本编程 103
6.5.1 JavaScript禁用的未雨绸缪 104
6.5.2 确保链接不依赖于JavaScript 104
6.5.3 监听CSS何时禁用 105
6.5.4 事件的亲和力 105
6.6 小结 106
第7章 JavaScript与CSS 107
7.1 访问样式信息 107
7.2 动态元素 109
7.2.1 元素的位置 109
7.2.2 元素的尺寸 115
7.2.3 元素的可见性 117
7.3 动画 119
7.3.1 滑动 119
7.3.2 渐显 119
7.4 浏览器 120
7.4.1 鼠标位置 120
7.4.2 视口 121
7.5 拖放 123
7.6 库 128
7.6.1 moo.fx和jQuery 128
7.6.2 Scriptaculous 129
7.7 小结 131
第8章 改进表单 132
8.1 表单验证 132
8.1.1 必填字段 134
8.1.2 模式匹配 136
8.1.3 规则集合 138
8.2 显示错误信息 139
8.2.1 验证 140
8.2.2 何时验证 142
8.3 可用性的提升 144
8.3.1 悬停的说明 144
8.3.2 标记必填字段 146
8.4 小结 147
第9章 制作图库 148
9.1 图库示例 148
9.1.1 Lightbox 148
9.1.2 ThickBox 150
9.2 制作图库 151
9.2.1 分离加载 154
9.2.2 半透明的覆盖层 155
9.2.3 定位盒子 157
9.2.4 导航 160
9.2.5 幻灯片 162
9.3 小结 165
第四部分 Ajax
第10章 Ajax导引 168
10.1 使用Ajax 168
10.1.1 HTTP请求 169
10.1.2 HTTP响应 173
10.2 处理响应数据 176
10.3 完整的Ajax程序包 177
10.4 数据的不同用途 179
10.4.1 基于XML的RSS Feed 179
10.4.2 HTML注入器 181
10.4.3 JSON与JavaScript:远程执行 182
10.5 小结 182
第11章 用Ajax改进blog 183
11.1 永不终止的blog 183
11.1.1 blog的模板 183
11.1.2 数据源 186
11.1.3 事件检测 187
11.1.4 请求 188
11.1.5 结果 188
11.2 实时网志 191
11.3 小结 193
第12章 自动补全的搜索 194
12.1 自动补全搜索的例子 194
12.2 制作页面 195
12.3 监听键盘输入 197
12.4 抓取结果 200
12.5 导航结果列表 202
12.5.1 键盘导航 202
12.5.2 鼠标导航 203
12.6 最终成果 203
12.7 小结 208
第13章 Ajax wiki 209
13.1 wiki是什么 209
13.2 对话数据库 209
13.3 Ajax请求 211
13.4 服务器端代码 212
13.4.1 处理请求 212
13.4.2 执行和格式化SQL 213
13.5 处理JSON响应 215
13.6 附加的案例研究:JavaScript blog 216
13.7 应用程序的代码 217
13.7.1 核心JavaScript代码 218
13.7.2 JavaScript SQL库 221
13.7.3 Ruby服务器端代码 221
13.8 小结 224
第五部分 JavaScript的未来
第14章 JavaScript路在何方 226
14.1 JavaScript 1.6与1.7 226
14.1.1 JavaScript 1.6 226
14.1.2 JavaScript 1.7 229
14.2 Web Applications 1.0 231
14.2.1 制作时钟 232
14.2.2 简单行星模拟 235
14.3 Comet 238
14.4 小结 240
第六部分 附录
附录A DOM参考手册 242
附录B 事件参考手册 257
附录C 浏览器 273
索引 275
展开