第一部分 基本理论 1
第1章 浏览器发展概述 1
1.1 Mosaic和早期浏览器 1
1.2 Trident 2
1.3 Gecko 3
1.4 KHTML和WebKit 5
1.4.1 Apple Safari 5
1.4.2 Google Chrome 6
1.5 Presto 7
第2章 浏览器体系结构 8
2.1浏览器的组成 8
2.2浏览器参考架构 9
2.3浏览器解析原理 11
2.3.1浏览器渲染过程 11
2.3.2 HTML解析 12
2.3.3 CSS解析 14
2.3.4 JavaScript解析 14
2.4浏览器渲染模式 15
2.4.1渲染模式简介 15
2.4.2渲染模式选择 17
2.4.3渲染模式影响 18
第3章 浏览器应用开发技术 20
3.1传统的静态网站应用 20
3.1.1 HTTP通信模型 20
3.1.2 HTML和CSS结合 21
3.2动态网站应用 23
3.2.1 JavaScript 23
3.2.2 Ajax 23
3.3浏览器增强应用 25
3.4富因特网应用 25
3.5新型HTML 5应用 26
第二部分 IE到Firefox的应用移植实现 27
第4章 HTML兼容性移植 27
4.1 HTML标准兼容性分析 27
4.1.1 HTML标准发展历史 27
4.1.2 IE与Firefox的HTML标准兼容性 28
4.2 HTML兼容性差异与移植实现方案 30
4.2.1 HTML注释元素 30
4.2.2 HTML table元素width属性 32
4.2.3 HTML table元素colspan属性 35
4.2.4 HTML base元素 40
4.2.5 HTM表单元素 41
4.2.6 HTML嵌入标签元素 48
4.2.7 HTML列表元素 51
4.2.8 HTML DTD声明问题 53
4.2.9 HTML select元素的option显示 55
4.2.10 HTML img元素 56
第5章 CSS兼容性移植 60
5.1 CSS标准发展概述 60
5.2 CSS兼容性分析 60
5.2.1 CSS盒模型 61
5.2.2盒子类型 61
5.2.3定位机制 62
5.2.4渲染模式对盒模型影响 63
5.3 CSS差异与移植实现方案 65
5.3.1 CSS Hack 65
5.3.2 IE盒模型问题 68
5.3.3 CSS类选择器 72
5.3.4 CSS光标形状 73
5.3.5 CSS列表缩进 74
5.3.6 CSS alpha滤镜 76
5.3.7 CSS边框outset属性 78
5.3.8 CSS内容溢出 81
5.3.9 CSS超链接伪类顺序 83
5.3.10 CSS元素浮动问题 85
5.3.11 CSS双边距问题 88
第6章 JavaScript兼容性移植 91
6.1 JavaScript简介 91
6.1.1 JavaScript诞生 91
6.1.2 JavaScript标准化 92
6.1.3 JavaScript实现 92
6.2 JavaScript标准兼容性分析 93
6.2.1 ECMAScript 94
6.2.2 BOM 94
6.2.3 DOM 94
6.3 ECMAScript兼容性差异与移植实现方案 95
6.3.1 Array数组创建 95
6.3.2 Date.getYear()返回值 97
6.3.3 eval(“id/name”)获取元素对象 98
6.4 BOM兼容性差异与移植实现方案 100
6.4.1 window.event全局事件对象 101
6.4.2 event.x/y事件坐标 103
6.4.3 event.srcElement事件源 105
6.4.4 event.fromElement/.toElement事件目标对象 108
6.4.5 event.cancelBubble阻止事件传播 110
6.4.6 event.returnValue阻止浏览器默认操作 113
6.4.7 event.button鼠标按键 114
6.4.8 window.frame框架引用 118
6.4.9 window.status状态栏 120
6.4.10 window.screenLeft与window.screenTop 122
6.4.11 location.href导航 124
6.5 DOM兼容性差异与移植实现方案 126
6.5.1 document.all[]获取文档全部对象引用 127
6.5.2 attachEvent添加事件侦听函数 129
6.5.3 detachEvent移除事件侦听函数 131
6.5.4 backgroundPositionX(Y)设置背景坐标 134
6.5.5 onpropertychange属性值变化 137
6.5.6 DOM节点childNodes子节点集合 139
6.5.7 DOM节点parentElement父节点 143
6.5.8 DOM操作createElement创建节点 145
6.5.9 DOM操作removeNode删除节点 147
6.5.10 DOM对象自定义属性 149
第7章 浏览器插件移植实现 152
7.1插件技术原理 152
7.1.1插件应用结构 152
7.1.2插件实现方式 153
7.2 IE插件 153
7.2.1 IE插件简介 154
7.2.2 IE ActiveX插件 154
7.3 Firefox插件 157
7.3.1 Firefox插件简介 157
7.3.2 NPAPI接口标准 157
7.3.3插件调用流程 159
7.3.4插件通信方式 160
7.3.5 Scriptable插件数据结构 160
7.4 Firefox插件开发实例 163
7.4.1开发环境 163
7.4.2插件设计 163
7.4.3插件开发 165
7.4.4插件编译 172
7.4.5插件注册 172
7.4.6插件测试 173
第8章 浏览器扩展迁移实现 175
8.1 IE扩展 175
8.1.1 IE扩展简介 175
8.1.2一个IE扩展简单实例 175
8.2 Firefox扩展 178
8.2.1 Firefox扩展简介 178
8.2.2 Firefox扩展开发相关技术 179
8.2.3 Firefox扩展开发方式 180
8.3基于XUL的Firefox扩展开发 182
8.3.1开发准备 183
8.3.2配置扩展元数据文件 183
8.3.3扩展界面XUL 184
8.3.4扩展打包与安装 187
8.4基于Jetpack项目的Firefox扩展开发 187
8.4.1基于Jetpack Prototype的扩展开发 188
8.4.2基于Add-on Builder扩展开发 191
8.4.3基于Add-on SDK扩展开发 197
8.5基于XPCOM的Firefox扩展开发 199
8.5.1 XPCOM简介 199
8.5.2一个XPCOM组件实例 199
8.5.3 Gecko XPCOM组件 204
8.5.4 JavaScript code modules 208
附录 插件内置类型与脚本类型对应及转换 214
参考文献 215