标题：HTML5程序设计
基本信息
书　名： HTML5程序设计（第2版） 
系列书名： 图灵程序设计丛书  封面图书
作　者： Peter Lubbers Brian Albers Frank Salim 
译　者： 李杰 刘淼 柳靖 
书　号： 978-7-115-27871-5
作者简介
Peter Lubbers，Kaazing技术交流资深总监，旧金山HTML5用户组创建人。作为HTML5和WebSocket的狂热爱好者，Peter经常在国际大会上发言，还在全球范围内开展HTML5的技术培训。在加盟Kaazing前，Peter在Oracle担任了近十年的资深信息架构师，获得过两项软件专利。
内容简介
 超级畅销书《HTML5高级程序设计》升级版 
 引领下一代Web开发潮流 
 全面涵盖开创性HTML5 API 
本书首先介绍了HTML5 的历史背景、新的语义标签及与以往HTML 版本相比的根本变化，同时揭示了HTML5 背后的设计原理。本书在上一版的基础上新增了SVG 和拖放API相关内容，并对部分内容进行了更新。从第2 章起，分别围绕构建令人神往的富Web 应用，逐一讨论了HTML5 的Canvas、Geolocation、Communication、WebSocket、Forms、WebWorkers、Storage 等API 的使用，辅以直观明了的客户端和服务器端示例代码，让开发人员能够迅速理解和掌握新一代Web 标准所涵盖的核心技术。本书最后探索了离线Web 应用并展望了HTML5 未来的发展前景。本书面向有一定经验的Web 应用开发人员，对HTML5 及未来Web 应用技术发展有浓厚兴趣的读者也可以学习参考。
目　录
第1章 HTML5概述 1
1.1　HTML5发展史 1
1.2　关于2022年的那个神话 2
1.3　谁在开发HTML5 3
1.4　新的认识 3
1.4.1　兼容性和存在即合理 3
1.4.2　效率和用户优先 4
1.4.3　化繁为简 5
1.4.4　通用访问 5
1.5　无插件范式 5
1.6　HTML5的新功能 8
1.6.1　新的DOCTYPE和字符集 8
1.6.2　新元素和旧元素 9
1.6.3　语义化标记 10
1.6.4　使用Selectors API简化
选取操作 15
1.6.5　JavaScript日志和调试 18
1.6.6　window.JSON 19
1.6.7　DOM Level 3 19
1.6.8　Monkeys、Squirrelfish和其他
JavaScript引擎 19
1.7　小结 21
第2章 Canvas API 22
2.1　HTML5 Canvas概述 22
2.1.1　历史 22
2.1.2　canvas是什么 23
2.1.3　canvas坐标 23
2.1.4　什么情况下不用canvas 23
2.1.5　替代内容 24
2.1.6　CSS和canvas 25
2.1.7　浏览器对HTML5 Canvas的
支持情况 25
2.2　使用HTML5 Canvas API 25
2.2.1　检测浏览器支持情况 25
2.2.2　在页面中加入canvas 26
2.2.3　变换 28
2.2.4　路径 30
2.2.5　描边样式 32
2.2.6　填充样式 34
2.2.7　填充矩形区域 34
2.2.8　绘制曲线 35
2.2.9　在canvas中插入图片 37
2.2.10　渐变 38
2.2.11　背景图 40
2.2.12　缩放canvas对象 42
2.2.13　Canvas变换 43
2.2.14　Canvas文本 45
2.2.15　应用阴影 46
2.2.16　像素数据 48
2.2.17　Canvas的安全机制 50
2.3　使用HTML5 Canvas创建应用 51
2.3.1　进阶功能之全页玻璃窗 54
2.3.2　进阶功能之为Canvas
动画计时 54
2.4　小结 57
第3章 SVG 58
3.1　SVG概述 58
3.1.1　历史 58
3.1.2　理解SVG 59
3.1.3　可缩放图形 61
3.1.4　使用SVG创建2D图形 61
3.1.5　在页面中添加SVG 61
3.1.6　简单的形状 62
3.1.7　变换SVG元素 63
3.1.8　复用内容 64
3.1.9　图案和渐变 64
3.1.10　SVG路径 65
3.1.11　使用SVG文本 66
3.1.12　组合场景 67
3.2　使用SVG创建交互式应用 68
3.2.1　添加树 69
3.2.2　添加updateTrees函数 69
3.2.3　添加removeTree函数 70
3.2.4　添加CSS样式 70
3.2.5　最终代码 70
3.3　小结 74
第4章 音频和视频 75
4.1　HTML5 Audio和Video概述 75
4.1.1　视频容器 75
4.1.2　音频和视频编解码器 76
4.1.3　HTML5 Audio和Video的
限制 77
4.1.4　audio元素和video元素的
浏览器支持情况 77
4.2　使用HTML5 Audio和Video API 78
4.2.1　浏览器支持性检测 79
4.2.2　可访问性 79
4.2.3　理解媒体元素 80
4.2.4　使用audio元素 85
4.2.5　使用video元素 86
4.2.6　进阶功能 93
4.3　小结 95
第5章 Geolocation API 96
5.1　位置信息 96
5.1.1　纬度和经度坐标 96
5.1.2　位置信息从何而来 97
5.1.3　IP地址地理定位数据 98
5.1.4　GPS地理定位数据 98
5.1.5　Wi-Fi地理定位数据 98
5.1.6　手机地理定位数据 99
5.1.7　用户自定义的地理定位数据 99
5.2　HTML5 Geolocation的浏览器
支持情况 99
5.3　隐私 100
5.3.1　触发隐私保护机制 101
5.3.2　处理位置信息 101
5.4　使用HTML5 Geolocation API 102
5.4.1　浏览器支持性检查 102
5.4.2　位置请求 102
5.5　使用HTML5 Geolocation构建应用 107
5.5.1　编写HTML显示代码 109
5.5.2　处理Geolocation数据 110
5.5.3　最终代码 112
5.6　进阶功能 115
5.6.1　现在的状态是什么 115
5.6.2　在Goolge Map上显示“我在
这里” 117
5.7　小结 118
第6章 Communication API 119
6.1　跨文档消息通信 119
6.1.1　理解源安全 122
6.1.2　跨文档消息通信的浏览器支
持情况 122
6.1.3　使用postMessage API 123
6.1.4　使用postMessage API创建
应用 124
6.2　XMLHttpRequest Level 2 128
6.2.1　跨源XMLHttpRequest 129
6.2.2　进度事件 130
6.2.3　HTML5 XMLHttpRequest
Level 2的浏览器支持情况 131
6.2.4　使用XMLHttpRequest API 131
6.2.5　创建XMLHttpRequest应用 133
6.3　进阶功能 136
6.3.1　结构化的数据 136
6.3.2　Framebusting 136
6.4　小结 137
第7章 WebSockets API 138
7.1　WebSockets概述 138
7.1.1　实时和HTTP 138
7.1.2　解读WebSockets 140
7.2　编写简单的Echo WebSocket
服务器 145
7.3　使用HTML5 WebSockets API 153
7.3.1　浏览器支持情况检测 153
7.3.2　API的基本用法 154
7.4　创建HTML5 WebSockets应用程序 158
7.4.1　编写HTML文件 159
7.4.2　添加WebSocket代码 160
7.4.3　添加Geolocation代码 160
7.4.4　合并所有内容 161
7.4.5　最终代码 163
7.5　小结 165
第8章 Forms API 166
8.1　HTML5 Forms概述 166
8.1.1　HTML Forms与XForms 166
8.1.2　功能性表单 167
8.1.3　HTML5 Forms的浏览器
支持情况 167
8.1.4　输入型控件目录 168
8.2　使用HTML5 Forms API 172
8.2.1　新的表单特性和函数 172
8.2.2　表单验证 175
8.2.3　验证反馈 178
8.3　构建HTML5 Forms应用 180
8.4　小结 185
第9章 拖放 186
9.1　Web拖放发展史 186
9.2　HTML5拖放概述 187
9.2.1　蓝图 187
9.2.2　需要记住的事件 189
9.2.3　设置元素可拖动 192
9.2.4　传输和控制 192
9.3　构建拖放应用 193
9.4　拖放文件 201
9.5　进阶功能 205
9.6　小结 206
第10章 Web Workers API 207
10.1　Web Workers的浏览器支持情况 208
10.2　使用Web Workers API 208
10.2.1　浏览器支持性检查 208
10.2.2　创建Web Workers 209
10.2.3　多个JavaScript文件的加载
与执行 209
10.2.4　与HTML5 Web Workers
通信 209
10.3　编写主页 210
10.3.1　处理错误 211
10.3.2　停止Web Workers 212
10.3.3　Web Workers的嵌套使用 212
10.3.4　使用定时器 213
10.3.5　示例代码 213
10.4　构建Web Workers应用 214
10.4.1　编写blur.js辅助脚本 216
10.4.2　编写blur.html应用页面 217
10.4.3　编写blurWorker.js 218
10.4.4　与Web Worker通信 218
10.4.5　运行程序 219
10.4.6　示例代码 220
10.5　小结 225
第11章 Web Storage API 226
11.1　HTML5 Web Storage概述 226
11.2　Web Storage的浏览器支持情况 227
11.3　使用Web Storage API 227
11.3.1　检查浏览器的支持性 227
11.3.2　设置和获取数据 229
11.3.3　封堵数据泄漏 230
11.3.4　localStorage与
sessionStorage 230
11.3.5　Web Storage API的其他特
性和函数 232
11.3.6　更新Web Storage后的通信 234
11.3.7　探索Web Storage 235
11.4　构建Web Storage应用 236
11.5　浏览器数据库存储展望 247
11.5.1　Web SQL Database 247
11.5.2　索引数据库API 250
11.6　进阶功能 251
11.6.1　JSON对象的存储 251
11.6.2　共享窗口 252
11.7　小结 253
第12章 构建离线Web应用 254
12.1　HTML5离线Web应用概述 254
12.2　使用HTML5离线Web应用API 256
12.2.1　检查浏览器的支持情况 256
12.2.2　搭建简单的离线应用程序 256
12.2.3　支持离线行为 257
12.2.4　manifest文件 257
12.2.5　applicationCache API 259
12.2.6　运行中的应用缓存 260
12.3　使用HTML5离线Web应用构建
应用 261
12.3.1　创建记录资源的manifest
文件 263
12.3.2　创建构成界面的HTML和
CSS 264
12.3.3　创建离线JavaScript 264
12.3.4　检查applicationCache的
支持情况 266
12.3.5　为Update按钮添加处理
函数 266
12.3.6　添加Geolocation跟踪代码 267
12.3.7　添加Storage功能代码 267
12.3.8　添加离线事件处理程序 268
12.4　小结 268
第13章 HTML5未来展望 269
13.1　HTML5的浏览器支持情况 269
13.2　HTML未来的发展 269
13.2.1　WebGL 270
13.2.2　设备 272
13.2.3　音频数据API 272
13.2.4　触摸屏设备事件 272
13.2.5　P2P网络 275
13.2.6　最终方向 275
13.3　小结 275