1 认识HTML5 2
今天就升级到HTML5! 2
HTML5-o-Matic介绍,着手更新你的HTML! 4
没想到吧,HTML5标记居然离你这么近! 7
HTML5闪亮登场:最新版HTML的告白 11
真正的HTML5请起立…… 12
HTML5到底如何工作…… 14
谁做什么? 16
第一项任务:浏览器侦察 17
用JavaScript能做些什么? 22
编写正式的JavaScript 25
编写正式的JavaScript(续)…… 26
要点 31
练习答案 33
2 介绍JavaScript和DOM 36
JavaScript的工作方式 36
用JavaScript能做什么? 37
声明变量 38
如何命名变量 40
需要表达 43
反反复复…… 46
用JavaScript做判断 49
更多判断……另外,增加一个“收容箱” 50
在页面中增加JavaScript,怎么加?在哪里加? 53
JavaScript如何与页面交互 54
如何制作你自己的DOM 55
初尝DOM 56
HTML5来自火星,JavaScript来自金星 58
页面完全加载之前不要打扰DOM 64
那么,DOM还能做什么? 66
能不能再谈谈JavaScript?或者,能不能告诉我JavaScript中如何存储多个值? 67
Phrase-o-Matic 71
要点 75
练习答案 77
3 事件、处理程序,诸如此类 86
准备进入Web镇之声 86
出发…… 87
不过我点击“Add Song”按钮时什么也没有发生 88
处理事件 89
制订计划…… 90
访问“Add Song”按钮 90
为按钮指定一个点击处理程序 91
仔细研究发生了什么…… 92
获得歌曲名 94
如何向页面增加一首歌? 97
如何创建一个新元素 99
向DOM增加新元素 100
集成在一起…… 101
……试一试 101
回顾一我们做的工作 102
如何增加成品代码…… 105
集成成品代码 106
要点 108
练习答案 110
4 JavaScript函数和对象 114
扩展你的词汇 114
如何增加你自己的函数 115
函数如何工作 116
函数剖析 121
局部变量和全局变量 123
了解局部变量和全局变量的作用域 124
噢,我们提到过函数也是值吗? 128
有人谈到“对象”? 131
如何用JavaScript创建对象 132
可以用对象做的一些事情 133
谈谈向函数传入对象 136
对象也可以有行为…… 142
再回到Web镇影院…… 143
增加“this”,关键字 145
如何创建构造函数 147
到底是怎么回事? 149
试一试你的构造函数 153
window对象到底是什么? 155
再谈window.onload 156
再谈document对象 157
再谈document.getElementById 157
再来考虑一个对象:元素对象 158
要点 160
练习答案 162
5 实现HTML位置感知 166
位置,位置,位置 166
纬度和经度…… 167
地理定位API如何确定你的位置 168
你到底在哪里? 172
如何集成 176
找出我们的秘密位置…… 179
编写代码查找距离 181
如何向页面增加地图 183
加一个按钉…… 186
用Google Maps API还能做另外一些很酷的事情 188
可以谈谈你的精度吗? 191
“无处可逃” 192
启动应用 193
调整原来的代码…… 194
动起来! 196
你有一些选项 198
超时和最大年龄…… 199
不要大胆尝试(让地理定位充分施展) 202
完成这个应用! 204
集成我们的新函数 205
要点 207
练习答案 210
6 与web交流 214
万能糖果公司需要一个Web应用 214
万能糖果公司的更多背景介绍 216
如何向Web服务做出请求? 219
如何从JavaScript做出请求 220
XML让位,JSON登场 226
编写一个onload处理函数 229
显示糖果销售数据 230
如何建立你自己的Web服务器 231
调整代码以利用JSON 236
转向实际服务器 237
惊险情节! 239
记得吧?我们有一个惊险情节,这是一个bug 242
浏览器安全策略是什么? 244
那么,我们有哪些选择? 247
认识JSONP 252
那么JSONP中的“P”代表什么? 253
更新万能糖果公司的Web应用 256
第1步:处理script元素…… 264
第2步:现在来建立定时器 265
第3步:重新实现JSONP 267
差点忘了:当心可怕的浏览器缓存 272
如何删除重复的销售报告 273
更新JSON URL来包含lastreporttime 275
要点 277
7 秀出你的艺术天份 282
新的创业项目:TweetShirt 282
审查“初样” 283
如何在Web页面中增加画布 286
如何看到画布 288
在画布上绘图 290
妥善地失败 295
TweetShirt:全局视图 297
首先,建立HTML 300
现在来增加〈form〉 301
用JavaScript做些计算 302
编写drawSquare函数 304
增加BackgroundColor调用 307
与此同时,再回到TweetShirt.com…… 309
“奇怪地”绘制 311
分解arc方法 314
浅尝弧的使用 316
我说度,你却说弧度 317
再来编写TweetShirt的圆代码 318
编写drawCircle函数…… 319
得到微博 323
画布特写 328
试一试drawText 330
完成drawText 函数 331
要点 338
练习答案 341
8 不再是父辈的老电视 350
认识Webville TV 350
先搞定HTML部分…… 351
video元素如何工作? 353
深入研究视频属性…… 354
关于视频格式需要知道什么 356
如何处理所有这些格式…… 358
我听说有API 363
Webville TV的一个小内容“计划” 364
如何编写“视频结束”处理程序 367
canPlayType方法如何工作 369
打开演示样机的包装 375
检查其余工厂代码 376
setEffect和setVideo处理程序 378
实现视频控件 384
切换测试视频 387
现在来些特效 389
如何完成视频处理 392
如何使用scratch缓冲区处理视频 393
用画布实现scratch缓冲区 395
现在需要写一些效果 399
如何使用error事件 406
要点 408
练习答案 410
9 在本地存储 414
浏览器存储如何工作(1995~2010) 414
HTML5 Web存储如何工作 417
记住…… 418
本地存储和数组是双胞胎吗? 424
创建界面 429
现在来增加JavaScript 430
完成用户界面 431
需要暂停一下,来点预定服务 434
自己动手DIY维护 435
这个技术确实有…… 439
使用数组重新实现应用 440
转换createSticky来使用数组 441
删除便条贴 446
deleteSticky函数 449
如何选择要删除的即时贴? 450
如何由事件得到要删除的即时贴 451
还要从DOM删除即时贴 452
更新用户界面来指定颜色 453
JSON.stringify,不只是用于数组 454
使用新的stickyObj 455
请不要自己尝试(或者突破你的5MB) 458
既然你已经了解了localStorage,怎么使用呢? 462
要点 464
练习答案 466
10 运用JavaScript 474
可怕的“slow script” 474
JavaScript如何分配时间 474
单线程遇到麻烦 475
增加另一个控制线程提供帮助 476
Web工作线程如何工作 478
第一个Web工作线程…… 483
编写Manager.js 484
从工作线程接收消息 485
现在来编写工作线程 486
虚拟土地掠夺 494
如何计算Mandelbrot集 496
如何使用多个工作线程 497
构建Fractal Explorer应用 503
成品代码 504
创建工作线程,为它们分配任务…… 508
编写代码…… 509
启动工作线程 510
实现工作线程 511
重回代码:如何处理工作线程的结果 514
让画布占满浏览器窗口 517
吹毛求疵的主程序员 518
实验室生活 520
要点 524
练习答案 526
附录:其他 532
#1 Modemizr 532
#2音频 533
#3 jQuery 534
#4 XHTML死了,还是XHTML永存 536
#5 SVG 537
#6离线Web应用 538
#7 Web Socket 539
#8更多画布API 540
#9选择器API 542
#10不过,还有呢! 543
HTML5新构造指南 545
Web镇HTML5语义元素指南 546
Web镇CSS3属性指南 548