JavaScript DOM高级程序设计
分類: 图书,计算机/网络,程序设计,Java Java Script J2EE,
作者: (加)桑贝斯(Samb-ells,J.)等著,李松峰等译
出 版 社: 人民邮电出版社
出版时间: 2008-7-1字数: 710000版次: 1页数: 457印刷时间: 2008/07/01开本: 16开印次: 1纸张: 胶版纸I S B N : 9787115181091包装: 平装编辑推荐
“本书是一本全景式的、沟通历史和未来的Web开发经典好书。是对现有JavaScript DoM程序开发最佳实践的一次大检阅和大放送,是推动Web标准化和向下一代Web开发挺进的里程碑式著作。”
——本书译者
“如果你是一位中级JavaScript人员,还想更上一层楼,那么这将是使你梦想成真的绝妙好书。”
——DOMAssistant库的作者Robert Nyman
本书深入浅出地讲述了作为一名专业的Web开发人员(或者真正的高手)所必须了解和掌握的高级知识,是Web编程领域名副其实的扛鼎之作。书中对核心JavaScript原理的总结和概括、对最佳实践的倡导和践行、对DOM规范讲解的提纲挈领、对浏览器外部通信(Ajax)的反思与解决之道、对Web 2.o rXJ容整合(Mashup)的分类与讲说等,无一不折射出这本书是作者博观约取、厚积薄发的心血力作。
与此同时,如果你也醉心于Prototype、jQuery、YUI、Ext等优秀的JavaScript库,想见微知著地真正理解这些库背后的工作原理,甚至希望创建自己的库,那么这本书恰好适合你。
内容简介
本书注重理论与实践的结合,全面讲述高级的DOM脚本编程。全书分为3个部分:第一部分“深入理解DOM脚本编程”,涉及W3CDOM规范的各方面,包括非标准的浏览器支持和不支持的内容;第二部分“浏览器外部通信”,以Ajax和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于实践。通过学习全书内容,读者将能构建起属于自己的DOM实用方法库。本书适合有Web开发和设计经验的读者阅读和参考。
作者简介
Jeffrey Sambells资深Web设计师和程序员。We—Create公司创始人之一暨研发总监。除本书外,他还与人合写了Beginning Google MapsApplications with PHPand Ajax等著作。
目录
第一部分深入理解DOM脚本编程
第1章遵循最佳实践
1.1不唐突和渐进增强
1.2让JavaScript运行起来
1.2.1把行为从结构中分离出来
1.2.2不要版本检测
1.2.3通过平稳退化保证可访问性
1.2.4为重用命名空间而进行规划
1.2.5通过可重用的对象把事情简化
1.2.6一定要自己动手写代码
1.3JavaScript语法中常见的陷阱
1.3.1区分大小写
1.3.2单引号与双引号
1.3.3换行
1.3.4可选的分号和花括号
1.3.5重载(并非真正的重载)
1.3.6匿名函数
1.3.7作用域解析和闭包
1.3.8迭代对象
1.3.9函数的调用和引用(不带括号)
1.4实例:WYSIWYGJavaScript翻转图
1.5小结
第2章创建可重用的对象
2.1对象中包含什么
2.1.1继承
2.1.2理解对象成员
2.1.3window对象中的一切
2.1.4理解作用域和闭包是根本
2.2创建你自己的对象
2.2.1一变多:创建构造函数
2.2.2添加静态方法
2.2.3向原型中添加公有方法
2.2.4公有、私有、特权和静态成员真那么重要吗
2.2.5对象字面量
2.3this是什么
2.4try{}、catch{}和异常处理
2.5实例:你自己的调试日志
2.5.1为什么需要JavaScript日志对象
2.5.2myLogger()对象
2.6小结
第3章DOM2核心和DOM2 HTML
3.1DOM不是JavaScript,它是文档
3.2DOM的级别
3.2.1DOM 0 级
3.2.2DOM 1 级
3.2.3DOM 2 级
3.2.4DOM 3 级
3.2.5哪个级别适合你
3.3创建示例文档
3.3.1创建DOM文件
3.3.2选择一个浏览器
3.4DOM核心
3.4.1继承在DOM中的重要性
3.4.2核心Node对象
3.4.3核心Element对象
3.4.4核心Document对象
3.4.5遍历和迭代DOM树
3.5DOM HTML
3.5.1DOM2 HTML 的HTMLDocument对象
3.5.2DOM2 HTML 的HTMLElement对象
3.6实例:将手工HTML代码转换为DOM代码
3.6.1DOM生成工具的HTML文件
3.6.2使用示例HTML片段进行测试
3.6.3扩充ADS库
3.6.4generateDOM对象的框架
3.7小结
第4章响应用户操作和事件
4.1DOM2级事件
4.2事件的类型
4.2.1对象事件
4.2.2鼠标移动事件
4.2.3鼠标单击事件
4.2.4键盘事件
4.2.5表单相关的事件
4.2.6针对W3C DOM的事件
4.2.7自定义事件
4.3控制事件流和注册事件侦听器
4.3.1事件流
4.3.2注册事件
4.3.3在事件侦听器中访问事件对象
4.3.4跨浏览器的事件属性和方法
4.4小结
第5章动态修改样式和层叠样式表
5.1W3CDOM2样式规范
5.1.1CSSStyleSheet对象
5.1.2CSSStyleRule对象
5.1.3CSSStyleDeclaration对象
5.1.4支持的匮乏
5.2当DOM脚本遇到样式
5.3把样式置于DOM脚本之外
5.3.1style属性
5.3.2基于className切换样式
5.3.3切换样式表
5.3.4修改CSS规则
5.4访问计算样式
5.5Microsoft的filter属性
5.6实例:简单的渐变效果
5.7小结
第6章案例研究:图像裁剪和缩放工具
6.1测试文件
6.2imageEditor对象
6.2.1调用imageEditor工具
6.2.2imageEditor载入事件
6.2.3创建编辑器标记和对象
6.2.4向imageEditor对象添加事件侦听器
6.2.5缩放图像
6.2.6裁剪图像
6.2.7未完成的图像编辑器
6.3小结
第二部分浏览器外部通信
第7章向应用程序中加入Ajax
7.1组合的技术
7.1.1语义化XHTML和DOM
7.1.2JavaScript和XMLHttpRequest对象
7.1.3XML
7.1.4一个可重用的对象
7.1.5Ajax是正确的选择吗
7.2为什么Ajax会破坏网站及如何解决
7.2.1依赖JavaScript生成内容
7.2.2通过script标签绕过跨站点限制
7.2.3后退按钮和书签功能
7.2.4完成请求的赛跑
7.2.5增加资源占用
7.2.6问题解决了吗
7.3实例:Ajax增强的相册
7.4小结
第8章案例研究:实现带进度条的异步文件上传功能
8.1信息载入时的小生命
8.2起点
8.3完成整合:上传进度指示器
8.3.1addProgressBar()对象的结构
8.3.2载入事件
8.3.3addProgressBar()对象
8.4小结
第三部分部分高级脚本编程资源
第9章通过库来提高生产力
9.1选择合适的库
9.2增强DOM操作能力
9.2.1连缀语法
9.2.2通过回调函数进行过滤
9.2.3操纵DOM文档
9.3处理事件
9.3.1注册事件
9.3.2自定义事件
9.4访问和操纵样式
9.5通信
9.6小结
第10章添加效果增强用户体验
10.1自己动手实现效果
10.1.1让我看到内容
10.1.2提供反馈
10.2几个视觉效果库简介
10.3视觉盛宴
10.3.1MOO式的CSS属性修改
10.3.2通过Script.aculo.us实现视觉效果
10.3.3通过Moo.fx实现逼真的运动效果
10.3.4圆角效果
10.3.5其他库
10.4行为增强
10.5小结
第11章丰富的Mashup!运用API添加地图、搜索及更多功能
11.1API密钥
11.2客户端API:离不开JavaScript
11.2.1地图中的Mashup应用
11.2.2Ajax搜索请求
11.2.3地图与搜索的Mashup应用
11.3服务器端API:需要代理脚本
11.3.1通过Basecamp构建集成的To-Do列表
11.3.2通过Flickr取得个性头像
11.4小结
第12章案例研究:用DOM设计选择列表
12.1经典的感觉
12.2构建更好的选择列表
12.3策略?我们不需要臭哄哄的策略
12.3.1相关的文件
12.3.2FauxSelect对象
12.3.3开始创建人造select元素
12.3.4查找select元素
12.3.5构建DOM元素
12.4添加事件——为人造select赋予生命
12.5让表单绽放光彩
12.6行为修正
12.6.1z-index来救急
12.6.2键盘控制及其他细节
12.6.3select太大了吗
12.7最后的细节
12.8继续替换select的冒险
12.9小结
书摘插图
第一章遵循最佳实践
你很兴奋,你的客户也很兴奋。你刚刚为客户安装启用了新版的网站,一切都很顺利。网站很花哨,它历经了数小时汗水和泪水的浇灌,每一处设计细节——扩展式菜单、交互的Aiax都精心调试过,所有新式花样无所不包。它看上去很不错,运行得也很完美,所有人都沉浸在喜悦中。然而,一周之后,噩梦开始了。客户慌里慌张地打来电话,好像是据他们的部分顾客来电话反应说主页上的链接打不开了,而另外一些顾客在填写反馈表单时也碰到了问题。但在你和你的客户那里却不存在这些的问题。还有一些人也打来电话,抱怨下载网站的每一个页面都要等很长时间,即使看上去网页内容并不很多,而你从来没有发现下载时间有问题。更糟糕的是,随后,你客户发现网站在搜索引擎中的排名一落千丈。看来事情没有想象的那么乐观,但问题出在哪里
呢?下面我们就一起来查找原因。
最佳实践是人们做事时应该遵循的、被公认和经过验证的模式。虽然不一定是唯一的,甚至不是最佳的方式,但这些方式是大多数人认同的做事方式。一般的书在最后部分会提到一些最佳实践,这更多地是一种提示,即在你已学会了每件事并按自己的方式行事时,告诉你还会有一种最适当的方式。我之所以把最佳实践放在前面来讲,就是为了让你在开始学习新知识之前,先明确正确的方向。如果有阳关大道,那又何必去走独木桥呢?
1.1不唐突和渐进增强
XHTML(ExteIlsibleHyperextMarkup Laneuaee,可扩展超文本标记语言)、CSS(Cascading StyleSheet,层叠样式表)和使用JaVaScript的DOM(DocumentObjectModel,文档对象模型)脚本是Web设计的三个主要部分。其中,XHTML用于提供文档结构的语义标记,CSS为文档布局提供定位和样式,而DOM脚本编程用于增强文档的行为和交互性。发现了吗?我刚才说DOM脚本“增强”,而不是为文档“提供”行为和交互性。“增强”和“提供”之间的差异暗示了一个重要区别。我们都学过XHTML语义,知道验证文档是否符合w3c规范,而且也都在用CSS来为严格型XHTML文档标记应用适当的样式(对吧?)。但是,作为第三个主要部分的DOM脚本,虽然它可以把事情做得格外漂亮,为我们的wleb应用程序增光添彩,却有可能是一个唐突的家伙。DOM脚本编程依赖于JavaScript。
……