第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
· · · · · · (
收起)