前言 1
第1章使用JavaScript字符串 11
1.0简介 11
1.1连接两个或多个字符串 13
1.2连接字符串和另一种数据类型 14
1.3条件比较字符串 15
1.4在字符串中查找子字符串 18
1.5从一个字符串提取子字符串 20
1.6检查一个存在的、非空的字符串 21
1.7将一个关键字字符串分解为单独的关键字 23
1.8插入特殊字符 25
1.9处理textarea的单个行 27
1.10去除字符串末尾的空白 28
1.11左补充或右补充一个字符串 29
第2章使用正则表达式 32
2.0简介 32
2.1测试一个子字符串是否存在 36
2.2测试不区分大小写的子字符串匹配 37
2.3验证社会安全号码 38
2.4找到并突出显示一个模式的所有实例 39
2.5使用新字符串替换模式 43
2.6使用捕获圆括号交换一个字符串中的单词 43
2.7使用正则表达式来去除空白 47
2.8使用命名实体来替代HTML标签 48
2.9搜索特殊字符 48
第3章日期、时间和定时器 51
3.0简介 51
3.1打印出今天的日期 53
3.2打印出UTC日期和时间 54
3.3打印出一个ISO 8601格式日期 55
3.4把一个ISO 8601格式的日期转换为Date对象可接受的一种格式 57
3.5创建一个特定的日期 60
3.6规划未来的一个日期 60
3.7记录流逝的时间 61
3.8创建一个延迟 62
3.9创建重复性定时器 63
3.10使用带有定时器的函数闭包 64
第4章使用Number和Math 67
4.0简介 67
4.1保持一个递增的计数 69
4.2把十进制数转换为一个十六进制值 71
4.3创建一个随机数生成器 72
4.4随机产生颜色 72
4.5把表中的字符串转换为数字 74
4.6把表中一列的所有数字加和 74
4.7在角度和弧度之间转换 77
4.8找到页面元素可容纳的一个圆的半径和圆心 77
4.9计算圆弧的长度 80
第5章使用数组和循环 81
5.0简介 81
5.1循环遍历数组 83
5.2创建多维数组 84
5.3从数组创建一个字符串 85
5.4排序数组 86
5.5按顺序存储和访问值 87
5.6以相反的顺序存储和访问值 88
5.7创建一个新数组作为已有数组的子集 89
5.8在数组中搜索 91
5.9将一个多维数组扁平化 92
5.10搜索和删除或替换数组元素 93
5.11对每个数组元素应用一个函数 94
5.12对数组中的每个元素执行一个函数并返回一个新数组 96
5.13创建一个过滤后的数组 97
5.14验证数组内容 98
5.15使用一个关联数组来存储表单元素名和值 101
第6章使用JavaScript函数构建重用性 105
6.0简介 105
6.1创建一段可重用的代码 106
6.2把单个数据值传递到函数 107
6.3把复杂的数据对象传递给函数 108
6.4创建一个动态运行时函数 110
6.5把一个函数当做参数传递给另一个函数 112
6.6实现递归算法 113
6.7创建能够记住其状态的函数 115
6.8使用一个通用的科里化函数提高应用程序性能 118
6.9使用缓存计算(Memoization)来提高应用程序性能 120
6.10使用匿名函数包装全局变量 123
第7章处理事件 126
7.0简介 126
7.1检测页面何时完成载入 129
7.2使用Event对象捕获鼠标点击事件的位置 130
7.3创建一个通用的、可重用的事件处理函数 133
7.4根据修改的条件来取消一个事件 136
7.5阻止事件在一组嵌套元素中传播 137
7.6捕获键盘活动 140
7.7使用新的HTML5拖放 143
7.8使用Safari方向事件和其他移动开发环境 151
第8章浏览器模块 153
8.0简介 153
8.1请求Web页面访问者确认一项操作 154
8.2创建一个新的、下拉式的浏览器窗口 155
8.3找到关于浏览器的访问页面 155
8.4警告Web页面访问者将要离开页面 157
8.5根据颜色支持更改样式表 158
8.6根据页面大小修改图像尺寸 159
8.7在CMS模板页面中创建面包屑路径 161
8.8将一个动态页面加入书签 164
8.9针对后退按钮、页面刷新来保持状态 167
第9章表单元素和验证 169
9.0简介 169
9.1访问表单文本输入值 169
9.2动态关闭或打开表单元素 171
9.3根据一个事件从表单元素获取信息 171
9.4当点击单选按钮的时候执行一个动作 174
9.5检查一个有效的电话号码 177
9.6取消表单提交 178
9.7阻止重复表单提交 179
9.8隐藏和显示表单元素 181
9.9根据其他表单选择修改一个选项列表 184
第10章调试和错误处理 187
10.0简介 187
10.1优雅地处理无JavaScript支持的情况 187
10.2检查函数中的错误 190
10.3对于简单调试使用一条警告 191
10.4捕获一个错误并提供优雅的错误处理 192
10.5初始化可管理的错误 194
10.6使用Firefox的Firebug 195
10.7使用Firebug设置一个断点并查看数据 199
10.8 Firefox和Console 200
10.9使用IE的内建调试器 204
10.10使用IE Developer Tools设置一个断点 207
10.11 Opera的Dragonfly 209
10.12使用Dragonfly设置一个断点 211
10.13打开Safari的开发工具 212
10.14使用Safari调试器设置断点 217
10.15 Chrome中的调试 219
第11章访问页面元素 221
11.0简介 221
11.1访问一个给定的元素并找到其父元素和子元素 225
11.2访问Web页面中所有的图像 226
11.3在一篇文章中找出所有的图像 232
11.4使用Selectors API找出文章中的所有图像 233
11.5找出一组元素的父元素 236
11.6突出显示每个元素中的第一个段落 237
11.7对无序列表应用条纹主题 240
11.8创建一个给定类的所有元素的一个数组 242
11.9找出共享同一属性的所有元素 242
11.10找出所有选中的选项 244
11.11把一个表行中所有值加和 245
11.12获取元素属性 247
11.13获取一个元素的样式信息 249
第12章创建和删除元素和属性 252
12.0简介 252
12.1使用innerHTML:一种添加内容的快速而容易的方法 252
12.2在已有页面元素前插入元素 253
12.3在页面的末尾附加一个新元素 257
12.4触发IE的旧版来样式化新元素 258
12.5插入一个新的段落 258
12.6给新的段落添加文本 259
12.7向一个已有元素添加属性 262
12.8测试一个布尔值 263
12.9删除一个属性 264
12.10移动一个段落 265
12.11使用脚注项目符号替代链接 265
12.12向已有的表添加行 269
12.13从一个div元素删除一个段落 271
12.14从HTML表格删除行 273
12.15修改元素的CSS样式属性 275
第13章使用Web页面空间 279
13.0简介 279
13.1确定Web页面的区域 280
13.2度量元素 282
13.3在页面中定位元素 283
13.4隐藏页面区段 286
13.5创建可折叠的表单区段 287
13.6添加一个页面覆盖 291
13.7创建标签页 294
13.8创建基于悬停的弹出信息窗口 299
13.9折叠边栏或调整其大小 302
第14章 使用JavaScript、CSS和ARIA创建交互式和可访问性效果 306
14.0简介 306
14.1显示隐藏的页面区段 308
14.2创建警告消息 309
14.3突出显示遗漏数据或数据不正确的表单字段 311
14.4给页面覆盖添加键盘可访问性 317
14.5创建可折叠的表单区段 321
14.6显示一个带颜色的闪烁以表示一个动作 325
14.7给标签页应用程序添加ARIA属性 329
14.8动态区域 332
第15章创建富媒体和交互应用程序 334
15.0简介 334
15.1在画布中创建基本的图形(使用canvas元素) 335
15.2在Internet Explorer中实现画布应用程序 338
15.3在画布中创建一个动态的线条图表 339
15.4向一个SVG文件添加JavaScript 342
15.5从Web页面脚本访问SVG 344
15.6在Internet Explorer中模拟SVG 347
15.7为嵌入到HTML中的SVG增加交互性 348
15.8使用Math函数在SVG中创建一个实际的、走动的模拟时钟 354
15.9在HTML中加入SVG和画布元素 357
15.10在Firefox和WebKit/Safari中调试WebGL支持 359
15.11当一个音频文件开始播放的时候运行一个例程 360
15.12用JavaScript和video元素控制视频 362
第16章JavaScript对象 367
16.0简介 367
16.1定义一个基本的JavaScript对象 368
16.2保持对象成员私有 369
16.3用原型扩展对象 370
16.4给对象添加Getter/Setter 373
16.5继承一个对象的功能 374
16.6通过定义一个新的属性来扩展对象 377
16.7枚举一个对象的属性 383
16.8阻止对象可扩展性 386
16.9阻止对象添加和修改属性描述符 387
16.10阻止对对象的任何修改 388
16.11一次性对象和为你的JavaScript提供命名空间 390
16.12用Prototype.bind再次发现“this” 392
16.13将对象方法链化 394
第17章JavaScript库 397
17.0简介 397
17.1包装你的代码 398
17.2使用JsUnit测试代码 400
17.3简化你的库 404
17.4寄存库 405
17.5使用一个外部库:构建于jQuery框架之上 408
17.6使用已有的jQuery插件 411
17.7把库转换为一个Query插件 412
17.8安全地把几个库组合到你的应用程序中 416
第18章通信 420
18.0简介 420
18.1访问XMLHttpRequest对象 421
18.2为传输准备数据 423
18.3确定查询调用的类型 424
18.4为Ajax请求添加一个回调函数 427
18.5检查一个错误条件 429
18.6处理一个文本结果 429
18.7(使用JSONP)对另一个域进行Ajax请求 430
18.8从服务器填充一个选项列表 432
18.9使用定时器以新数据自动更新页面 434
18.10使用PostMessage跨窗口通信 438
第19章使用结构化数据 442
19.0简介 442
19.1处理从Ajax调用返回的一个XML文档 443
19.2从一个XML树提取相关信息 444
19.3使用JSON产生一个JavaScript对象 449
19.4解析一个JSON格式化字符串 451
19.5使用JSON把一个对象转换为过滤的/转换的字符串 452
19.6把hCalendar微格式注释转换为一个画布时间表 454
19.7清除页面RDFa并且使用rdfQuery和jQuery RDF插件将其转换为JSON 457
第20章持久化 463
20.0简介 463
20.1给URL附加持久性信息 464
20.2创建一个Cookie来跨页面持久化信息 468
20.3使用History.pushState方法和window.onpopevent来持久化信息 471
20.4针对客户端存储使用sessionStorage 475
20.5创建一个localStorage客户端数据存储项 482
20.6使用关系数据存储来持久化数据 485
第21章JavaScript创新用法 487
21.0简介 487
21.1创建一个浏览器插件或扩展 488
21.2创建桌面和移动挂件 493
21.3使用PhoneGap为iPhone、Android和BlackBerry开发JavaScript应用程序 498
21.4使用JavaScript扩展工具 500
21.5使用Web Workers和File API创建高效的桌面应用程序 504