第1章 第三方JavaScript介紹 1
1.1 第三方JavaScript的定義 2
1.2 第三方JavaScript的用法 4
1.2.1 嵌入式微件 6
1.2.2 分析和統計 8
1.2.3 Web服務API封裝 9
1.3 開發一個簡單的微件 13
1.3.1 服務端生成腳本 14
1.3.2 通過iframes分發微件 16
1.4 第三方開發的挑戰 17
1.4.1 未知的上下文 17
1.4.2 共享環境 18
1.4.3 瀏覽器限製 19
1.5 總結 19
第2章 應用的分發和加載 20
2.1 配置第三方開發環境 21
2.1.1 發布者的測試頁麵 21
2.1.2 Web服務器 22
2.1.3 模擬多個域 23
2.2 加載初始的腳本 24
2.2.1 阻塞式腳本引入 25
2.2.2 使用async和defer無阻塞
加載腳本 26
2.2.3 動態腳本插入 28
2.3 初始腳本文件 29
2.3.1 window和undefined混淆 30
2.3.2 基本應用程序流程 31
2.4 加載額外的文件 32
2.4.1 JavaScript文件 33
2.4.2 庫 35
2.5 腳本參數傳遞 37
2.5.1 使用查詢字符串 37
2.5.2 使用片段標識符 40
2.5.3 使用自定義數據屬性 40
2.5.4 使用全局變量 42
2.6 獲取應用數據 44
2.7 總結 45
第3章 HTML和CSS的渲染 46
3.1 輸齣HTML 47
3.1.1 使用document.write 47
3.1.2 追加到已知位置 48
3.1.3 追加多個微件 50
3.1.4 解耦渲染對象 52
3.2 為你的HTML添加樣式 53
3.2.1 使用內聯樣式 53
3.2.2 加載CSS文件 54
3.2.3 嵌入CSS到
JavaScript中 56
3.3 防禦性的HTML和CSS 59
3.3.1 命名空間59
3.3.2 CSS的特殊性 60
3.3.3 過度設置CSS的特殊性 62
3.4 將內容嵌入到iframe中 65
3.4.1 沒有設置src的iframe 66
3.4.2 外部iframe 68
3.4.3 樣式繼承 69
3.4.4 何時避免使用iframe 73
3.5 小結 74
第4章 與服務器通信 75
4.1 AJAX和瀏覽器的同源
策略 76
4.1.1 判定同源的規則 77
4.1.2 同源策略和腳本加載 78
4.2 帶填充的JSON(JSONP) 80
4.2.1 通過腳本元素加載JSON 80
4.2.2 動態的迴調函數 81
4.2.3 局限性和安全問題 84
4.3 子域名代理 85
4.3.1 使用document.domain更改
文檔的源 87
4.3.2 使用子域代理實現跨域
通信 88
4.3.3 子域名代理與JSONP相結閤 91
4.3.4 Internet Explorer和子域代理 94
4.3.5 安全隱患 95
4.4 跨源資源共享 95
4.4.1 發送簡單的HTTP請求 96
4.4.2 使用CORS傳輸Cookie 98
4.4.3 發送預檢請求 99
4.4.4 瀏覽器支持 99
4.5 總結 100
第5章 跨域iframe通信 101
5.1 HTML5 window.postMessage API 102
5.1.1 使用window.postMessage 發送信息 103
5.1.2 接收發送給窗口的消息 104
5.1.3 瀏覽器的支持 106
5.2 降級技術 107
5.2.1 使用window.name發送
消息 108
5.2.2 使用URL片段標識符發送消息 111
5.2.3 使用Flash發送消息 113
5.3 使用easyXDM簡化跨域消息通信 116
5.3.1 加載並初始化easyXDM 116
5.3.2 使用easyXDM.Socket發送簡單信息 118
5.3.3 使用easyXDM.Rpc定義JSON-RPC接口 119
5.4 總結 124
第6章 驗證和會話 125
6.1 第三方Cookie 126
6.1.1 Sessions的設置和
讀取 127
6.1.2 禁用第三方Cookie 128
6.1.3 Internet Explorer和P3P頭 129
6.1.4 檢測cookies是否可用 131
6.2 設置第三方cookie 134
6.2.1 使用獨立窗口 134
6.2.2 iframe的解決方案(隻針對Safari) 137
6.2.3 Chrome和Firefox中的單頁麵會話 140
6.3 會話安全 140
6.3.1 HTTPS和更安全的cookie 141
6.3.2 多級身份認證 142
6.4 總結 144
第7章 安全性 145
7.1 Cookies,會話,和會話竊取 146
7.2 跨站腳本 147
7.2.1 XSS攻擊 148
7.2.2 CSS中的XSS漏洞 149
7.2.3 防止XSS對應用的攻擊 151
7.3 跨站請求僞造 153
7.3.1 XSRF攻擊 154
7.3.2 JSON劫持 155
7.3.3 保護應用免受XSRF攻擊 156
7.4 發布者漏洞 158
7.4.1 發布者模擬 158
7.4.2 點擊劫持 160
7.4.3 拒絕服務 162
7.5 總結 162
第8章 獨特的框架 163
8.1 實現一個最基本的
SDK 165
8.1.1 初始化 166
8.1.2 異步加載 167
8.1.3 暴露公共方法 170
8.1.4 事件監聽器 170
8.2 版本管理 173
8.2.1 URL版本管理 174
8.2.2 通過初始化進行版本控製 176
8.3 封裝Web服務的APIs 178
8.3.1 在客戶端訪問Web服務APIs 179
8.3.2 封裝Camera Stork API 182
8.3.3 識彆發布者 186
8.3.4 用戶授權和OAuth 190
8.4 總結 191
第9章 性能 193
9.1 優化負荷 194
9.1.1 閤並和壓縮源代碼 195
9.1.2 減少圖像請求 196
9.1.3 緩存文件 198
9.1.4 推遲HTTP請求 199
9.2 JavaScript優化 204
9.2.1 瀏覽器內部:UI綫程,重繪和迴流 205
9.2.2 控製耗性能的調用:throttle和debounce函數 206
9.2.3 使用setTimeout延遲計算 208
9.3 被感知的性能 210
9.3.1 對用戶的操作保持樂觀 211
9.3.2 在文檔就緒之前渲染 212
9.4 總結 213
第10章 調試和測試 215
10.1 調試 216
10.1.1 在生産環境中使用開發環境的代碼 218
10.1.2 單步執行代碼 223
10.2 測試 227
10.2.1 單元測試、集成測試和迴歸測試 228
10.2.2 使用QUnit編寫迴歸測試 230
10.2.3 使用Hiro寫迴歸測試 233
10.3 總結 236
· · · · · · (
收起)