第Ⅰ部分Prototype 3
第1章 扩展和增强DOM元素 3
1.1扩展DOM元素 3
1.1.1美元符号函数:$() 4
1.1.2 $$() 4
1.1.3 Element.extend() 4
1.1.4将Element对象用作构造函数 5
1.2 DOM导航 6
1.2.1 adjacent方法 6
1.2.2 ancestors方法 7
1.2.3 up/down/next/previous方法 8
1.2.4 descendants/descendantOf/first Descendant/immediateDescendants方法 10
1.2.5 getElementsBySelector和getElementsByClassName方法 10
1.2.6 childElements函数 11
1.3修改页面内容 11
1.3.1 insert(element, content)和insert(element,{position:content}) 11
1.3.2 remove 11
1.3.3 replace 12
1.3.4update 12
1.4操作元素的大小、位置和可见性 13
1.4.1放置元素 13
1.4.2处理偏移 14
1.4.3显示和隐藏元素 15
1.4.4调整元素的大小 16
1.5处理CSS和样式 16
1.5.1 addClassName、 removeCLallName和toggleClassNames 16
1.5.2 hasClassName和classNames 19
1.5.3 setStyle和getStyle 19
1.6使用自己编写的方法扩展Element对象 19
1.7本章小结 20
第2章 处理跨浏览器事件 21
2.1注册事件处理程序 21
2.2响应事件 23
2.2.1 event.target属性、this属性和Event.element方法 23
2.2.2 Event.extend(event) 25
2.2.3 Event.stop(event) 26
2.3触发调度事件 27
2.4本章小结 30
第3章 简化AJAX和动态数据 31
3.1建立到服务器的请求 31
3.1.1 Ajax.Request 32
3.1.2回调 33
3.1.3 Ajax.Response 34
3.2以全局方式响应数据变化 35
3.3动态更新页面 35
3.3.1 Ajax.Updater 36
3.3.2 Ajax.PeriodicalUpdater 37
3.4本章小结 38
第4章 处理表单 39
4.1操作表单元素和数据 39
4.1.1 Form对象 39
4.1.2结合使用Form对象的方法 41
4.2验证表单数据 44
4.3使用AJAX提交表单 47
4.4本章小结 48
第5章 操作通用数据结构和函数 49
5.1增强原生对象并引入类 49
5.1.1对象扩展 49
5.1.2 Class对象 51
5.2修改和分析字符串 52
5.3生成模板化内容 54
5.4绑定和操作函数 55
5.4.1绑定函数 56
5.4.2操作函数的其他方法 57
5.5改进数组、散列和迭代器 58
5.5.1使用for…in循环会导致一些问题的原因 58
5.5.2 Enumerable类 59
5.5.3改进Array对象 62
5.5.4引入Hash类 63
5.6处理数值和日期 64
5.6.1数值 64
5.6.2日期 65
5.7本章小结 65
第6章 扩展Prototype 67
6.1 Script.aculo.us 67
6.2 Moo.fx for Prototype 73
6.2.1 Fx.TWeen 74
6.2.2 Fx.Morph 74
6.2.3 Fx.Transitions 74
6.2.4 Fx.Slide 75
6.3 Rico 75
6.3.1组件 76
6.3.2动画效果 78
6.3.3圆角 78
6.3.4拖放 79
6.4本章小结 79
第Ⅱ部分 YUI库 85
第7章 利用YUI库遍历和操作DOM 85
7.1遍历DOM以及查找元素 85
7.1.1 get方法 85
7.1.2 getElementsByClassName方法 86
7.1.3 getFirstChild和getLastChild方法 87
7.1.4 getFirstChildBy和getLastChildBy方法 88
7.1.5 getChildren和getChildrenBy方法 88
7.1.6 getElementsBy方法 90
7.1.7 getAncestorByTagName方法 91
7.1.8 getAncestorByClassName方法 94
7.1.9 getAncestorBy方法 95
7.1.10 Element实用工具 96
7.1.11 Selector实用工具 97
7.2操作内容 99
7.2.1 insertBefore方法 99
7.2.2 insertAfter方法 99
7.2.3处理类名 99
7.2.4 set5tyle方法 101
7.2.5 getStyle方法 102
7.2.6 setXY方法 102
7.3本章小结 103
第8章 处理跨浏览器事件 105
8.1注册页面事件和元素准备就绪事件 105
8.1.1 onDOMReady事件处理程序 106
8.1.2执行作用域和参数传递 108
8.1.3 onAvailable函数 110
8.1.4 onContentReady函数 112
8.1.5 on/addListener函数 112
8.1.6 removeListener函数 114
8.2处理键盘和鼠标输入 116
8.2.1 KeyListener实用工具 116
8.2.2 getCharCode函数 119
8.2.3 getXY 121
8.2.4 getTarget函数 121
8.2.5 getRelatedTarget函数 122
8.2.6 preventDefault 函l数 124
8.2.7 stopPropagation函数 125
8.2.8 stopEvent函数 126
8.3处理自定义事件 127
8.3.1创建和订阅自定义事件 128
8.3.2退订自定义事件 130
8.3.3 subscribeEvent方法 131
8.4管理浏览器历史并修正后退按钮 131
8.5本章小结 135
第9章 使用动画和拖放 137
9.1组合基本的动画序列 137
9.1.1 Anim类 138
9.1.2 Motion类 141
9.1.3 Scroll类 143
9.1.4 ColorAnim类 144
9.2平滑动画路径和运动 148
9.2.1缓动 148
9.2.2曲线路径(贝塞尔曲线) 150
9.3带有拖放功能的交互动画 155
9.3.1 DD 155
9.3.2 DDProxy 155
9.4本章小结 159
第10章 简化AJAX和动态加载 161
10.1建立HTTP请求并获取数据 161
10.1.1 asyncRequest函数 162
10.1.2 JSON 165
10.2动态加载库和组件 168
10.2.1 Get utility 168
10.2.2 YUl Loader Utility 171
10.3本章小结 175
第11章 利用窗口部件构建用户界面(第一部分) 177
11.1 AutoComplete实用工具与表单字段结合使用 177
11.2为内容构建容器 183
11.2.1 Module 183
11.2.2 Overlay 185
11.2.3 Panel 186
11.3使用选项卡和树状视图呈现内容 189
11.3.1 TabView 189
11.3.2 TreeView 198
11.4本章小结 209
第12章 利用窗口部件构建用户界面(第二部分) 211
12.1装配按钮、滑块和菜单 211
12.1.1按钮 211
12.1.2样式化 211
12.1.3滑块 216
12.1.4菜单 223
12.2提供日期选择功能 233
12.2.1简单的日历 233
12.2.2事件 236
12.2.3多页日历 238
12.3启用富内容编辑 239
12.3.1事件 244
12.3.2实际使用编辑器 246
12.4本章小结 247
第13章 利用YUI核心增强开发 249
13.1应用名称空间和模块性 249
13.1.1名称空间 249
13.1.2语言扩展 250
13.1.3模拟类继承关系 251
13.2检测浏览器环境和可用模块 261
13.2.1 YAHOO.env.ua 261
13.2.2 YAHOO.env.getVersion 261
13.2.3 YAHOO_config 263
13.3日志记录和调试 265
13.4本章小结 267
第14章 处理数据、表和图表 269
14.1格式化日期和数字 269
14.1.1日期 269
14.1.2数字 271
14.2获取数据源 273
14.3呈现表数据 280
14.4绘制图表和图形 284
14.5本章小结 291
第15章 使用YUl CSS工具 293
15.1建立跨浏览器一致性 293
15.2控制字体 295
15.3利用网格构建布局 297
15.3.1模板 299
15.3.2嵌套网格 300
15.4本章小结 303
第16章 构建和部署 305
16.1来自Yahoo!的共享YUI文件 305
16.2减少和优化加载时间 308
16.3本章小结 310
第Ⅲ部分Ext JS 313
第17章 架构和库约定 313
17.1何时使用Ext JS 313
17.2如何使用Ext JS 314
17.3 Ext JS的面向对象设计 315
17.3.1 Ext.namespace 316
17.3.2 Ext.override 316
17.3.3 Extextend和构造数约定 317
17.3.4 Ext.apply 318
17.3.5 Ext.applyIf 318
17.4功能强大的实用工具函数 319
17.4.1 Function.createCallback 319
17.4.2 Function.createDelegate 320
17.4.3 Function.createlnterceptor 320
17.4.4 Fumction.createSequence 321
17.4.5 Function.defer 322
17.5 Ext JS的基于事件的设计 322
17.5.1 Ext.util.Observable.addEvents 322
17.5.2 Ext.util.Observable.addListener/.on 323
17.5.3 Ext.util.Observable.removeListener/.un 323
17.5.4 Ext.util.Observable.fireEvent 323
17.5.5 Ext.util.Observable.hasListener 324
17.5.6 Ext.util.Observable.purgeListeners 324
17.5.7 Ext.util.Observable.relayEvents 324
17.5.8 Ext.util.Observable.suspendEvents/.resumeEvents 324
17.5.9 Ext.util.Observable.capture/.releaseCapture 324
17.6本章小结 325
第18章 元素、 DomHelper和模板 327
18.1元素操作 327
18.1.1 Ext.Element 327
18.1.2 Ext.Element方法 331
18.2 DOM遍历 335
18.2.1 Ext.DomQuery 336
18.2.2 Ext.DomQuery方法 337
18.3 DOM操作 338
18.3.1 Ext.DomHelper 338
18.3.2 Ext.Template 341
18.3.3 Ext.XTemplate 343
18.4 CSS操作 344
18.5本章小结 346
第19章 组件、布局和窗口 347
19.1 Ext.JS Component系统 347
19.1.1 Ext.Component 347
19.1.2 Ext.ComponentMgr 348
19.1.3 Ext.BoxComponent 350
19.1.4 Ext.Container 350
19.2 Ext JS Component生命周期 352
19.2.1初始化 352
19.2.2呈现 352
19.2.3销毁 353
19.3 Ext.Viewport 354
19.4 Ext.Container布局 355
19.4.1 Ext.layout.ContainerLayout 355
19.4.2 Ext.layout.BorderLayout 356
19.4.3 Ext.layout.ColunmLayout 357
19.4.4 Ext.layout.TableLayout 357
19.4.5 Ext.layout.AnchorLayout 358
19.4.6 Ext.layout.AbsoluteLayout 358
19.4.7 Ext.layout.FormLayout 359
19.4.8 Ext.layout.FitLayout 361
19.4.9 Ext.layout.Accordion 361
19.4.10 Ext.layout.CardLayout 362
19.4.11创建自定义布局 362
19.5面板和窗口 363
19.5.1 Ext.Panel 363
19.5.2 Ext.Window 365
19.5.3 Ext.WindowGroup 365
19.5.4 Ext.WindowMgr 365
19.6本章小结 365
第20章 数据处理以及服务器通信 367
20.1获取数据 367
20.1.1 Ext.data.DataProxy 368
20.1.2 Ext.data.HttpProxy 368
20.1.3 Ext.data.MemoryProxy 371
20.1.4 Ext.data.ScriptTagProxy 372
20.2重新建模数据 373
20.2.1Ext.data.Record 373
20.2.2Ext.data.DataReader 375
20.3本地存储数据 379
20.3.1 Ext.data.Store 379
20.3.2 Ext.data.Record(回顾) 382
20.3.3 Ext.StoreMgr 383
20.4集成所有类 383
20.5本章小结 385
第21章DataView和网格 387
21.1 Ext.DataView 387
21.1.1操作DataView 389
21.1.2DataView事件 392
21.2 Ext.grid.GridPanel 393
21.2.1Ext.grid.ColumnModel 394
21.2.2Ext.grid.AbstractSelectionModel 397
21.2.3 Ext.grid.CellSelectionModel 397
21.2.4 Ext.grid.RowSelectionModel 397
21.2.5 Ext.grid.CheckboxSelectionModel 397
21.2.6 Ext.grid.GridView 398
21.2.7 Ext.grid.GroupingView 398
21.2.8其他的定制方法 399
21.3本章小结 399
第22章 表单控件、验证及其他功能 401
22.1表单控件介绍 401
22.1.1 Ext.form.Label 402
22.1.2 Ext.form.Field 402
22.1.3 Ext.form.TextField 404
22.1.4 Ext.form.FormPanel和Ext.form.BasicForm 405
22.1.5其他表单控件 407
22.1.6Ext.form.NumberField 407
22.1.7Ext.form.TextArea 407
22.1.8Ext.form.TriggerField 407
22.1.9Ext.form.DateField 407
22.1.10 Ext.form.ComboBox 408
22.1.11 Ext.form.TimeField 408
22.1.12 Ext.form.Checkbox 408
22.1.13 Ext.form.Radio 408
22.1.14 Ext.form.CheckboxGroup 409
22.1.15 Ext.form.RadioGroup 410
22.1.16 Ext.form.HtmIEditor 411
22.1.17 Ext.form.Hidden 411
22.2表单字段和表单验证 411
22.2.1验证消息 412
22.2.2高级验证技术 413
22.2.3表单级验证 414
22.3其他功能 414
22.3.1状态管理 414
22.3.2浏览器历史 415
22.3.3视觉效果 416
22.3.4拖放 416
22.3.5工具栏和菜单 416
22.3.6主题 417
22.3.7树 417
22.3.8键盘导航 417
22.3.9其他更多技术 417
22.4本章小结 418
第Ⅳ部分Dojo 421
第23章 利用Dojo核心增强开发 421
23.1获取Dojo 421
23.1.1通过AOL CDN使用Dojo 421
23.1.2下载最新的Dojo发行版本 422
23.1.3尝试尚处于开发阶段的Dojo 422
23.2尝试使用Dojo 422
23.3研究Dojo核心 427
23.3.1声明、加载和提供依赖项 428
23.3.2定义类和使用继承关系 430
23.3.3在HTML标记中声明对象 433
23.4本章小结 438
第24章 操作DOM 439
24.1查找DOM元素 439
24.1.1利用dojo.byld查找DOM元素 440
24.1.2利用dojo.query查找元素 440
24.2处理DOM元素列表 443
24.2.1过滤和优化节点列表 443
24.2.2处理节点列表 452
24.2.3使用NodeList的其他方法 460
24.3本章小结 460
第25章 处理事件 461
25.1响应页面加载和卸载事件 461
25.2连接到DOM事件 463
25.2.1将内联处理程序连接到事件 464
25.2.2将全局函数连接到事件 464
25.2.3将对象方法连接到事件 465
25.2.4断开与事件的连接 466
25.2.5特殊的事件处理与事件对象 467
25.3连接到对象方法 468
25.4利用NodeList建立连接 470
25.5发布与订阅事件主题 473
25.5.1结合使用事件主题与DOM事件处理程序 473
25.5.2将对象方法用作订阅者 476
25.5.3取消订阅已发布的消息 477
25.5.4将对象方法转换成发布者 477
25.6使用Dojo行为 479
25.6.1利用行为查找节点并建立连接 479
25.6.2利用行为连接对象方法 481
25.6.3利用行为发布事件主题 482
25.7本章小结 483
第26章 编排动画 485
26.1对CSS样式属性制作动画 485
26.2使用淡入淡出转换 488
26.3使用擦除转换 489
26.4使用滑动动画移动元素 490
26.5使用缓动控制运动 492
26.6顺序链接动画 495
26.7以并行方式组合动画 496
26.8使用NodeList动画方法 498
26.9研究动画对象 500
26.10本章小结 505
第27章 处理AJAX和动态数据 507
27.1建立简单的Web请求 507
27.1.1建立简单的请求并处理响应 508
27.1.2使用一个处理程序同时处理错误和成功响应 510
27.2利用Deferred处理Web响应 511
27.2.1为成功和错误响应注册处理程序 511
27.2.2在一次调用中注册错误和成功处理程序 512
27.2.3注册一个同时处理错误和成功响应的处理程序 513
27.3处理响应格式 514
27.3.1处理文本响应 514
27.3.2处理XML响应 515
27.3.3处理JSON响应 516
27.3.4处理注释过滤JSON响应 516
27.3.5处理JavaScript响应 517
27.4指定请求方法 519
27.4.1构建一个服务器端请求回应工具 519
27.4.2尝试多种请求方法 522
27.5使用请求参数和内容 524
27.5.1建立带有查询参数的GET请求 524
27.5.2建立带有响应正文参数的POST请求 526
27.5.3建立带有原始正文内容的POST请求 527
27.6利用就地请求增强表单 528
27.7使用跨域的JSON源 535
27.7.1通过轮询变量来加载JsoN 536
27.7.2利用回调加载JSON 539
27.8利用IFrame建立请求 541
27.8.1利用代理脚本打包IFrame数据 541
27.8.2利用IFrame处理响应格式 542
27.8.3利用表单和IFrame上传文件 543
27.9本章小结 550
第28章 利用窗口部件构建用户界面 551
28.1构建并验证表单 551
28.1.1使用JavaScript实例化窗口部件 554
28.1.2在HTML标记中声明窗口部件 555
28.1.3利用正则表达式验证输入 556
28.1.4在提交时实施表单验证 557
28.1.5处理数字与货币值 559
28.1.6处理日期和时间字段 561
28.1.7增强单选按钮和复选框 563
28.1.8使用滑块进行离散值的选取 568
28.1.9使用动态文本区域和富文本编辑器 570
28.2管理应用程序布局 571
28.2.1搭建应用程序布局页面 572
28.2.2将ContentPane用作布局构建块 573
28.2.3利用BorderContainer管理布局区域 574
28.2.4利用StackContainer管理内容可见性 576
28.2.5利用AccordionContainer切换内容窗格 582
28.2.6利用TabContainer构建选项卡式的内容窗格 584
28.2.7利用SplitContainer划分布局区域 586
28.3创建应用程序控件和对话框 588
28.3.1构建可单击按钮并为其编写脚本 589
28.3.2编排弹出式上下文菜单 591
28.3.3组合按钮和菜单 594
28.3.4 利用按钮和菜单构建工具栏 595
28.3.5利用进度条提供完成进度反馈 596
28.4对窗口部件应用主题 598
28.4.1检查窗口部件的DOM结构 598
28.4.2加载主题并将其应用于窗口部件 600
28.4.3定制并检查可用主题 601
28.5本章小结 602
第29章 构建和部署Dojo 603
29.1研究Dojo构建 603
29.2查找构建系统 604
29.3创建自定义构建配置文件 604
29.4生成自定义构建 606
29.5检验并使用自定义构建 607
29.6本章小结 609
第30章 扩展Dojo 611
30.1研究DojoX子项目 611
30.2尝试高级窗口部件 612
30.2.1构建鱼眼菜单 612
30.2.2利用Toaster窗口部件建立动画通知 613
30.3采用高级表单验证辅助函数 614
30.4从模板生成内容 617
30.5绘制形状以及呈现图表 621
30.5.1绘制形状和线 621
30.5.2呈现图表和曲线图 622
30.6使用编码和加密例程 624
30.6.1生成MD5散列值 625
30.6.2采用Base64编码数据 626
30.6.3采用Blowfish加密数据 628
30.7导航JSON数据结构 629
30.8研究DojoX的其他功能 631
30.9本章小结 632
第V部分MooTools 635
第31章利用MooTools增强开发 635
31.1获取MooTools 635
31.1.1下载最新的MooTools发布版本 635
31.1.2尝试正在开发的MooTools版本 637
31.2研究MooTools Core 637
31.2.1检查MooTools版本 638
31.2.2确定类型 638
31.2.3检查已定义的值 639
31.2.4选择己定义的值 639
31.2.5选取随机数 639
31.2.6获取当前时间 639
31.2.7清除定时器和时间间隔 640
31.2.8合并和扩展对象 640
31.3使用数组扩展 641
31.3.1使用.each()和.forEach()处理数组项 642
31.3.2过滤和映射数组项 644
31.3.3检查数组项的内容 644
31.3.4将数组项转换成对象属性 646
31.3.5扩展与合并数组 646
31.3.6展平嵌套数组 647
31.3.7利用.link()应用选择规则 648
31.4使用散列数据结构 649
31.4.1定义散列和散列快捷方式 649
31.4.2设置与获取键和值 649
31.4.3映射和过滤散列 650
31.4.4使用.every()和.some()检查散列 651
31.4.5扩展与合并散列 651
31.4.6 将散列转换成URL查询字符串 652
31.5使用字符串扩展 652
31.5.1检查字符串内容 652
31.5.2将字符串转换成数字和颜色 653
31.5.3使用简单的替换模板 653
31.5.4 执行其他的转换 654
31.6使用函数扩展 654
31.6.1将函数绑定到对象上下文 655
31.6.2间歇性地延迟和设置函数调用 656
31.6.3尝试带有潜在异常的函数调用 657
31.7使用面向对象编程方法 657
31.7.1构建类和子类 657
31.7.2将方法和属性注入到现有类中 659
31.7.3实现混入类 660
31.8本章小结 665
第32章 操作DOM以及处理事件 667
32.1查找DOM元素 667
32.1.1使用$()和ID查找元素 668
32.1.2使用$$()和Css选择器查找元素 668
32.1.3导航DOM结构 670
32.2操作元素样式和属性 672
32.2.1操作元素Css类 672
32.2.2操作元素视觉样式 674
32.2.3操作元素属性 676
32.2.4操作扩展的元素属性 678
32.2.5使用元素存储机制安全地管理元数据 682
32.3修改DOM结构 683
32.3.1创建新元素 683
32.3.2复制元素 684
32.3.3获取元素 685
32.3.4注入元素 685
32.3.5创建并附加文本节点 686
32.3.6替换和包装元素 686
32.3.7接纳元素 686
32.3.8销毁和清空元素 687
32.4附加监听程序并处理事件 687
32.4.1响应页面加载和卸载事件 688
32.4.2添加和删除事件处理程序 689
32.4.3检查事件包装器对象 694
32.5本章小结 699
第33章 简化AJAX以及处理动态数据 701
33.1操作浏览器cookie 701
33.1.1使用cookie函数 702
33.1.2使用cookie支持的散列 703
33.2动态加载页面素材 704
33.2.1加载JavaScript和JSON源 705
33.2.2包含额外的CSS样式表 706
33.2.3获取图像和图像集合 707
33.3建立Web请求 709
33.3.1执行基本的Web请求 710
33.3.2获取和更新HTML内容 716
33.3.3请求并使用JavaScript和JSON数据 719
33.4本章小结 722
第34章 构建用户界面以及使用动画 723
34.1编排动画 723
34.1.1检查元素大小和位置 725
34.1.2使用MooTools Fx编排动画 727
34.1.3研究预制动画和效果 731
34.1.4使用Fx.Slide动画 732
34.1.5使用Fx.Scroll动画 733
34.1.6研究MooTools Fx.Transitions 734
34.1.7研究动画事件 737
34.1.8利用Fx.Morph对多个属性制作动画 740
34.1.9利用Fx.Elements对多个元素制作动画 742
34.2使用用户界面窗口部件 744
34.2.1构建折叠布局 744
34.2.2 向页面导航中添加平滑滚动 748
34.2.3启用可拖动元素 749
34.2.4自动滚动窗口和元素 753
34.2.5启用拖放目标 754
34.2.6构建可排序列表 756
34.2.7使用工具提示 759
34.2.8构建滑块控件 762
34.3本章小结 764