第一部分 認(rèn)識現(xiàn)代JavaScript
第1章 現(xiàn)代JavaScript程序設(shè)計 2
1.1 面向?qū)ο蟮腏avaScript 2
1.2 測試代碼 3
1.3 打包分發(fā) 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 小結(jié) 12
第二部分 專業(yè)JavaScript開發(fā)
第2章 面向?qū)ο蟮腏avaScript 14
2.1 語言特性 14
2.1.1 引用 14
2.1.2 函數(shù)重載和類型檢查 16
2.1.3 作用域 19
2.1.4 閉包 20
2.1.5 上下文對象 23
2.2 面向?qū)ο蠡A(chǔ) 24
2.2.1 對象 25
2.2.2 對象的創(chuàng)建 25
2.3 小結(jié) 30
第3章 創(chuàng)建可重用代碼 31
3.1 標(biāo)準(zhǔn)化面向?qū)ο蟮拇a 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 分發(fā) 45
3.4 小結(jié) 47
第4章 調(diào)試與測試的工具 48
4.1 調(diào)試 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 小結(jié) 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 標(biāo)準(zhǔn)的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 獲取元素的內(nèi)容 77
5.5.1 獲取元素內(nèi)的文本 77
5.5.2 獲取元素內(nèi)的HTML 78
5.6 操作元素特性 79
5.7 修改DOM 82
5.7.1 使用DOM創(chuàng)建節(jié)點 83
5.7.2 插入到DOM中 83
5.7.3 注入HTML到DOM 85
5.7.4 刪除DOM節(jié)點 87
5.8 小結(jié) 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關(guān)鍵字 93
6.2.3 取消事件冒泡 94
6.2.4 重載瀏覽器的默認(rèn)行為 95
6.3 綁定事件監(jiān)聽函數(shù) 97
6.3.1 傳統(tǒng)綁定 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 監(jiān)聽CSS何時禁用 105
6.5.4 事件的親和力 105
6.6 小結(jié) 106
第7章 JavaScript與CSS 107
7.1 訪問樣式信息 107
7.2 動態(tài)元素 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 鼠標(biāo)位置 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 小結(jié) 131
第8章 改進(jìn)表單 132
8.1 表單驗證 132
8.1.1 必填字段 134
8.1.2 模式匹配 136
8.1.3 規(guī)則集合 138
8.2 顯示錯誤信息 139
8.2.1 驗證 140
8.2.2 何時驗證 142
8.3 可用性的提升 144
8.3.1 懸停的說明 144
8.3.2 標(biāo)記必填字段 146
8.4 小結(jié) 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 導(dǎo)航 160
9.2.5 幻燈片 162
9.3 小結(jié) 165
第四部分 Ajax
第10章 Ajax導(dǎo)引 168
10.1 使用Ajax 168
10.1.1 HTTP請求 169
10.1.2 HTTP響應(yīng) 173
10.2 處理響應(yīng)數(shù)據(jù) 176
10.3 完整的Ajax程序包 177
10.4 數(shù)據(jù)的不同用途 179
10.4.1 基于XML的RSS Feed 179
10.4.2 HTML注入器 181
10.4.3 JSON與JavaScript:遠(yuǎn)程執(zhí)行 182
10.5 小結(jié) 182
第11章 用Ajax改進(jìn)blog 183
11.1 永不終止的blog 183
11.1.1 blog的模板 183
11.1.2 數(shù)據(jù)源 186
11.1.3 事件檢測 187
11.1.4 請求 188
11.1.5 結(jié)果 188
11.2 實時網(wǎng)志 191
11.3 小結(jié) 193
第12章 自動補全的搜索 194
12.1 自動補全搜索的例子 194
12.2 制作頁面 195
12.3 監(jiān)聽鍵盤輸入 197
12.4 抓取結(jié)果 200
12.5 導(dǎo)航結(jié)果列表 202
12.5.1 鍵盤導(dǎo)航 202
12.5.2 鼠標(biāo)導(dǎo)航 203
12.6 最終成果 203
12.7 小結(jié) 208
第13章 Ajax wiki 209
13.1 wiki是什么 209
13.2 對話數(shù)據(jù)庫 209
13.3 Ajax請求 211
13.4 服務(wù)器端代碼 212
13.4.1 處理請求 212
13.4.2 執(zhí)行和格式化SQL 213
13.5 處理JSON響應(yīng) 215
13.6 附加的案例研究:JavaScript blog 216
13.7 應(yīng)用程序的代碼 217
13.7.1 核心JavaScript代碼 218
13.7.2 JavaScript SQL庫 221
13.7.3 Ruby服務(wù)器端代碼 221
13.8 小結(jié) 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 小結(jié) 240
第六部分 附錄
附錄A DOM參考手冊 242
附錄B 事件參考手冊 257
附錄C 瀏覽器 273
索引 275