您的浏览历史

JavaScript DOM 高级程序设计(目前最深入的JavaScript力作之一)

促销活动
  • [本书]参加人民邮电出版社满80元赠书活动

基本信息

编辑推荐

目前最深入的JavaScript力作之一.
深入剖析Prototype、jQuery、YUI等JavaScript库的技术内幕..
全景阐述JavaScript DOM程序开发的最佳实践...

内容简介回到顶部↑

本书注重理论与实践的结合,全面讲述高级的DOM脚本编程。全书分为3个部分:第一部分“深入理解DOM脚本编程”,涉及W3CDOM规范的各方面,包括非标准的浏览器支持和不支持的内容;第二部分“浏览器外部通信”,以Ajax和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于实践。通过学习全书内容,读者将能构建起属于自己的DOM实用方法库。  本书适合有Web开发和设计经验的读者阅读和参考。

作译者回到顶部↑

本书提供作译者介绍

Jeffrey Sambells资深Web设计师和程序员。We—Create公司创始人之一暨研发总监。除本书外,他还与人合写了Beginning Google MapsApplications with PHPand Ajax等著作。
.. << 查看详细

作者: Aaron Gustafson
Aaron Gustafson,世界顶尖的Web工程师,创建了Web咨询公司Easy!Designs LLC。Aaron是WaSP(Web标准项目)和GAWDS(可访问性Web设计师协会)的成员。他还是A List Apart网站的技术编辑,Digital Web Magazine和MSDN等著名杂志的撰稿人。..... << 查看详细

[同作者作品]
JavaScript DOM 高级程序设计(目前最深入的JavaScript力作之一)

目录回到顶部↑

第一部分 深入理解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.3 JavaScript语法中常见的陷阱 
   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 函数的调用和引用(不带括号) 

译者序回到顶部↑

读者的眼睛是雪亮的。为了让还没有成为这本书读者的朋友听听已经看过这本书的读者的意见,我一直在关注网上有关这本书的评论。.
到中文版付梓时为止,Amazon 上已经有4篇评论,总体上毁誉参半,两人给了5星,一个给出3星,另一个则给出1星。而业内几个知名的专业blog 的评论中则普遍不乏溢美之辞。为什么会有这样大的差距呢?
Amazon 上第一个发表评论的是该书的技术编辑Cameron Turner ,评论题为Perfect in Every Way (一本十全十美的书),5星。他说:“这是一本真正讲述构建下一代Web 应用的书。到目前为止,这还是绝无仅有的。如果你需要为网站添加更多功能、灵活性和可访问性还有大势所趋的‘耀眼的Web 2.0 ’特性,那么这本书是‘必买’的。……需要提醒的是:如果你还是一个新手,可不要买这本书(因为它定位于‘高级’这个层次上)。只有真正理解了CSS、JavaScript 和HTML 才能从本书中获益。相信本书将成为所有专业Web 软件开发人员日常工作中时时查阅的必备图书。”
当然,Turner 可以算是本书的参与者,有些偏爱在所难免。不过他指出了本书针对中高级读者,而不适合新手,这一点非常关键。实际上,Amazon 上两位不满意的读者中,Richard(3星)就是因为看不太懂而发了牢骚。而另一位读者T.Dalmasso(1星)则对书中出现的错误非常恼火。幸运的是,他提到的错误在图灵公司给我的电子版文件里大部分已经修正。在翻译过程中,确实还发现了一些错误(主要是拼写和排版错误),但在我翻译过的书中已经算是比较少的了,远远没有多到令人生厌的程度,而且我基本上都已经解决了。
Amazon 上最后发表评论的是资深.NET 工程师David Betz“quantzai”(5星),他一上来就语出惊人:“这是我见过的最好的一本现代JavaScript 、DOM脚本编程和Ajax的书。这本书包括了JavaScript 中从经常令人误解的变量作用域到与DOM深入交互等方方面面的内容。……本书是‘研究生层次’的书,深入了Ajax的内幕,将使你成为专家,当然,也要求你一开始就具备思考力。” 评论最后,David Betz “quantzai ”对前面读者提出的拼写错误等问题给出了“反击”。他说:“这又不是一本讲英语的书(出一两处错误在所难免),那些小错误根本无伤大雅;而且,即使没有这些错误你该理解不了,还是理解不了。”他甚至用“井蛙不可以语于海,夏虫不可以语于冰”, 来表示对给出1星和3星的两位读者的不屑一顾。
在业内的知名blog 圈里,瑞典哥德堡的资深Web 工程师Roger Johansson 这样说:“我读了许多blog 和书,想搞清楚作用域、闭包、面向对象等JavaScript 概念,但是一直苦苦挣扎,读了本书后,我想问题终于解决了。”DOMAssistant 库的作者Robert Nyman 则评价:“如果你是一位中级JavaScript 开发人员,还想更上一层楼,那么这将是使你梦想成真的绝妙好书。”Godbit 项目的Nathan Smith 也给予了很高的赞誉:“我要说,这是我读过的最好的JavaScript 图书之一。”
看到这里,你有什么想法?没错。还记得小马过河的故事吗?无论是老黄牛,还是小松鼠,都有自己的角度和立场。因此,听别人的评论虽然能够大致了解一本书的内容,还是代替不了自己的判断。以我的经验,要购买一本自己感兴趣的、专注于某一技术领域的书,一是要听听网友的评论,二是仔细看一看书的目录,三是挑挑书的装帧,四是拿着书走向收银台(或者单击“放入购物车”按钮)。但是别忘了,对于一本外版书而言,译者也是中文版的第一读者。因此,听一听这位读者的看法也很重要(终于轮到我了,呵呵)。
作为译者,我来谈一谈自己对这本书的看法,供读者参考。..
这本书在面向标准的Web 编程领域是名副其实的扛鼎之作,也难怪它有些曲高和寡。全书的内容,都是作为一名专业的Web 开发人员(或者真正的高手)所必须了解和掌握的高级知识,没一点多余的内容,洋洋550 页中绝无浮华不实之辞。而且,书中对核心JavaScript 原理的总结和概括(如常见陷阱、作用域链解析、闭包、面向对象等)、对最佳实践的倡导和践行(包括对面向未来的现代Web 开发趋势的归纳和宣传,即脚本必须不唐突和增强而不是提供行为等)、对DOM 规范讲解的提纲挈领(好像还没有哪本书这么详细地讲解过DOM)、对浏览器外部通信(Ajax) 的反思与解决之道、对Web 2.0 内容整合(Mashup )的分类与讲说等,无一不折射出这本书是作者博观约取、厚积薄发的心血力作。最后(最后说的往往最重要),如果你也醉心于Prototype 、Base、jQuery 、YUI 、Ext、Mochikit 、DOMAssitant 、Script.aculo.us 、Moo.fx 等这些优秀的JavaScript 库,不知道多少次被它们的魅力所倾倒,也想探微知著地真正理解这些库背后的工作原理,甚至于希望创建自己的库,那么这本书恰好适合你——一名JavaScript 高手的需要,因为学习完这本书,你就会拥有自己跨平台的ADS 库了(你必须Get your hands dirty ——动手编写这个库的每一行代码),这还不够酷吗?应该说,本书是一本全景式的、沟通历史和未来的Web 开发经典好书,是对现有JavaScript DOM 程序开发最佳实践的一次大检阅和大放送,是推动Web 标准化和向下一代Web 开发挺进的里程碑式著作。而且,根据译者(就是我)的个人体会,这些话绝非溢美之辞,句句都言之有据,译者也愿意和读者就本书内容进行交流,互相学习。
然而,为什么在Amazon 上本书不像DOM Scripting (中译本《JavaScript DOM 编程艺术》,人民邮电出版社)那么广受关注,甚至大受欢迎呢——DOM Scripting 有近60人评论,给1星的只有两人,3星三人,4星15人,其余均为5星?
比较了一下两书的内容,可以发现,DOM Scripting 一书针对的是初学者,尤其是编程经验并不是很丰富的Web 前端开发和设计人员,所以行文浅显,门槛比较低,而且学习曲线也非常平滑,对于这些读者,本书可以说是比较完美的。讲JavaScript 非常好懂,而且字里行间渗透着现代的Web 开发思想。这也是国内很多读者都嫌内容太浅的原因,他们往往都是已经有不少经验的程序员了。对于这些读者,本书才是他们真正想找的那本。我们有理由相信它会受到大家的欢迎。
这是我与图灵公司合作的第一本书,也是我最喜欢的一本书。在此,我要感谢刘江老师的热
情邀请,感谢傅志红老师不厌其烦地回答我的问题和修改我的译稿,也感谢武卫东老师的悉心指导。同时,还要感谢本书的责任编辑杨爽,正是因为她创造性与我沟通,才使得本书在付梓前又消除了一些问题。不过,囿于个人水平和能力,翻译中的错误和不当之处在所难免。如果读者发现了书中的问题,请在我的个人网站http://www.cn-cuckoo.com 中给予指出,或者将电子邮件发送到lsf.email@yahoo.com.cn 。
本书由李松峰负责编译,参加翻译工作的还有李雅雯、程宝杰、宋会敏、闫建旺、左玉春、曹建辉、崔淑云、张井文、熊俊佳、左艳波、熊俊芹、刘英、赵淑云、贾爱华等。...
译 者 2008年2月于北京

前言回到顶部↑

DOM(Document Object Model,文档对象模型)脚本编程经常会被误解为Web 上的某种脚本编程,实际上,纯粹的DOM脚本编程只包括W3C DOM 规范中所涵盖的特性和方法。也就是说,不包括任何专有的浏览器特性。在理想的世界里,我们可以遵循标准,忽略专有特性,最终完成可以在任何设备中运行的脚本。但这个世界不是理想的世界——目前还不是。众所周知,并非所有设备或浏览器都合乎W3C 标准,那像我们这样的程序设计人员要满足每个人的要求该怎么办呢,怎样才能继续严格遵守W3C DOM 规范呢?.
当试图回答这些问题并在保持真正的DOM符合性基础上处理多浏览器时,我们萌生了写这本书的想法。本书不仅对以上问题给出了答案,而且还涉及下列主题。
深入W3C DOM 规范,并筛选出经常容易被误解的细节,同时仍然为非标准浏览器提供等价选项。
进一步探讨新方法,例如Ajax客户端—服务器端通信,冲破Ajax 的局限性以提供更具交互性的体验。
体验一些主要的第三方资源,通过它们省掉一些平淡的日常工作。
理解并创建自己日常所用的DOM方法库。
这些新的能力也带来了许多诱惑。我们在进行DOM 脚本编程时,往往因为热衷于一些华而不实的新特性,而背离了良好清晰的Web 设计原则。因而,纵贯全书作者都会强调最佳实践的价值,提供很多强调可用性和可访问性的解决方案,这样对最终用户和你——开发者或设计者而言,都是有益的。
你可以把这本书放在计算机旁作为参考,也可以从头到尾读完它。无论采取哪种方式,只要你坚持学习完本书中的理论、代码、例子和案例研究,就会深刻地发现自己已经很好地理解了书中那些高级概念的含义,不仅知其然,而且更知其所以然。
本书读者对象
本书适合对DOM 感兴趣并希望进一步提升自己的所有Web 开发者和设计者。通过本书通俗易懂的讲解,读者能够轻松地理解高级的DOM编程概念。如果读者对DOM 脚本编程和Web 标准有一些基本的经验,那么通过学习本书收获会更大。
本书组织方式
本书分三部分,通过学习全书内容,读者将能构建起属于自己的DOM实用方法库。书中的每一章都以前一章学习的概念为依托,因而本书的每一部分都是一个完整、独立的主题,而每一章则并非完全独立。
第一部分,“深入理解DOM脚本编程”,涉及W3C DOM 规范的方方面面,包括非标准的浏览器支持和不支持的内容。从一开始就以最佳实践为榜样,然后你将了解到DOM2 HTML 和DOM2 核心规范,同时还有DOM2 事件和DOM2 样式规范。本部分中的每一章都会给出一些不针对特定浏览器的例子。而且,你也将着手构建自己的脚本程序库,并往其中添加各种方法去访问和操纵DOM、样式以及事件。这些方法将不针对特定的浏览器,因此你可以很容易地在公共方法(你将自己创建)的基础上建立自己的应用程序。第一部分最后的第6章将会完成一个案例研究,在这一章中,你将学会建立一个交互式裁剪和调整图像大小的工具。
在介绍了操纵和访问文档的各个方面知识之后,第二部分,“浏览器外部通信”,将以Ajax 和客户端—服务器端通信为主题。在这一部分中,作者没有停留在介绍简单的做法上,而是深入解释了相应的内部工作机制,同时,也没有忘记介绍整合Ajax 界面时可能遇到的麻烦。第二部分最后把这些技能用于实战检验,综合运用传统和当前的通信方法,创建了一个带有实时进度条的文件上传程序。
最后,在第三部分,“部分高级脚本编程资源”中,作者集中介绍了一批第三方脚本编程资源,包括库和API 。你将在这一部分学习到如何利用主要的DOM 脚本库来提高自己的开发效率,也包括使用一些视觉效果,为自己的Web 应用程序添彩。同时,你还将学习如何通过可自由使用的API来整合交互式地图和项目管理工具。这些资源将为你提供高级编程能力,同时最大限度地减少你的重复性工作——但只有在对第一部分和第二部分内容深入理解的基础上,才能较好地体会到这些资源的价值。本书以Aaron Gustafson 撰写的一个案例研究作为结尾,这个案例把select 元素提高到了一个全新的水平。
作者没有提供附录,而是向读者公布了一个网站http://advanceddomscripting.com 。在这个网站中,读者可以下载到本书的源代码及额外一些例子和参考文献。作者将在这个网站中发布与DOM脚本编程相关的最新的重要消息,读者可以经常访问这个网站,以便与时俱进。
本书约定
为保证本书内容清晰,容易理解,全书将遵守如下约定:
(1) 代码以等宽字体表示。
(2) 新加的或修改过的代码通常会以加粗的等宽字体表示。

媒体评论回到顶部↑

“本书是一本全景式的、沟通历史和未来的Web开发经典好书,是对现有JavaScript DOM程序开发最佳实践的一次大检阅和大放送,是推动Web标准化和向下一代Web开发挺进的里程碑式著作。”.
——本书译者
“如果你是一位中级JavaScript开发人员,还想更上一层楼,那么这将是使你梦想成真的绝妙好书。”...
——DOMAssistant库的作者Robert Nyman

书摘回到顶部↑

第一章 遵循最佳实践
  你很兴奋,你的客户也很兴奋。你刚刚为客户安装启用了新版的网站,一切都很顺利。网站很花哨,它历经了数小时汗水和泪水的浇灌,每一处设计细节——扩展式菜单、交互的Aiax都精心调试过,所有新式花样无所不包。它看上去很不错,运行得也很完美,所有人都沉浸在喜悦中。然而,一周之后,噩梦开始了。客户慌里慌张地打来电话,好像是据他们的部分顾客来电话反应说主页上的链接打不开了,而另外一些顾客在填写反馈表单时也碰到了问题。但在你和你的客户那里却不存在这些的问题。还有一些人也打来电话,抱怨下载网站的每一个页面都要等很长时间,即使看上去网页内容并不很多,而你从来没有发现下载时间有问题。更糟糕的是,随后,你客户发现网站在搜索引擎中的排名一落千丈。看来事情没有想象的那么乐观,但问题出在哪里
呢?下面我们就一起来查找原因。
  最佳实践是人们做事时应该遵循的、被公认和经过验证的模式。虽然不一定是唯一的,甚至不是最佳的方式,但这些方式是大多数人认同的做事方式。一般的书在最后部分会提到一些最佳实践,这更多地是一种提示,即在你已学会了每件事并按自己的方式行事时,告诉你还会有一种最适当的方式。我之所以把最佳实践放在前面来讲,就是为了让你在开始学习新知识之前,先明确正确的方向。如果有阳关大道,那又何必去走独木桥呢?
  1.1 不唐突和渐进增强
  XHTML(ExteIlsibleHyperext Markup Laneuaee,可扩展超文本标记语言)、CSS(Cascading StyleSheet,层叠样式表)和使用JaVaScript的DOM(DocumentObjectModel,文档对象模型)脚本是Web设计的三个主要部分。其中,XHTML用于提供文档结构的语义标记,CSS为文档布局提供定位和样式,而DOM脚本编程用于增强文档的行为和交互性。发现了吗?我刚才说DOM脚本“增强”,而不是为文档“提供”行为和交互性。“增强”和“提供”之间的差异暗示了一个重要区别。我们都学过XHTML语义,知道验证文档是否符合w3c规范,而且也都在用CSS来为严格型XHTML文档标记应用适当的样式(对吧?)。但是,作为第三个主要部分的DOM脚本,虽然它可以把事情做得格外漂亮,为我们的wleb应用程序增光添彩,却有可能是一个唐突的家伙。DOM脚本编程依赖于JavaScript。
  ……
评论交流

共有26人开贴评论  35人参与评论  23人参与打分 查看

21人
 91%
用户平均打分
我要写评论 help如何参与评论和打分
1人
 4%
1人
 4%
0人
 0%
0人
 0%

yesorno_510
二级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-2-7 18:02:00
这书太紧俏了,前几天缺货预定买的,今天书送到了,写评论的时候又发现缺货了
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

walkingp
一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-2-4 15:35:00
js中我有两本推荐,一本是《javascript高级程序设计》,另一本就是本书。一直没有时间拜读《javascript权威指南》,它总给感觉大部头手册的印象。作为js初学者和js温习者,《javascript高级程序设计》绝对是一部经典,国内众多js书籍均有其影子,有的不知廉耻的“编者”居然一字不漏的照抄,国内的IT图片出版业浮躁得像一个大粪池。《javascript DOM高级程序设计》这本书属于面向中高级水平用户,主旨是通过对js库的循序渐进的架构来达到对js高级知识,如面向对象,匿名函数、继承、浏览器兼容性等的深层次剖析,曲高和寡,当然会有一部分人感觉书不好,可对我本人来讲,这是一部让我读完以后js水平会大幅度提升的一本书。极力向js中高级用户推荐。
另外一点值得提的是,译者李松峰感觉在翻译这本书时是相当不错的,读起来没有词不达意的感觉,他本人博客上也有不少js文章,感觉是js专家,行文比较低调,没有刻意去翻译而翻译。
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

yulinbook

一级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2009-3-18 23:26:00
很好的书,不依赖与某个库,而是教你自己实现一个自己的库。实现自己的库,可以让你对dom,对js,对跨浏览器又更深入的理解。 http://www.YulinCMS.com
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)

frankqnj

一级评论员
  
发表于:2009-2-5 14:34:00
我很庆幸 我买了这本书. 虽然不是在 china-pub上买的. 但是可以说 它对我的帮助 是我看过的这些书中 最大的... 他教会我如何做正确的事.少走弯路. 不过. 期待再版. 作者可以完善里面的一些方法.
比如 其中注册事件的 核心方法 addEvent()

作者的方法有问题. 因为该方法 修复了attachEvent中 listener 方法中 this 引用 不指向 注册的事件对象 的问题 他借助的是 给 事件对象 添加属性的方式 来解决. 却导致了另外的一个问题

即 当 同一构造函器的多个实例的同一方法 ,注册到相同对象的 同一事件侦听.导致.ie中.this最终都指向最后一个被实例化对象.的问题.
对于这个问题 jquery 的作者最近 好象 提出了一个 竞赛. 让大家 写一个 彻底的解决方案..下面是完美答案地址: 借用guid 来解决 好象是给每次注册时 通过不同的gudi来区别

http://dean.edwards.name/weblog/2005/10/add-event/
回复 ( 2条评论-- 点击查看讨论 )
您觉得呢? 送鲜花 (得2支)  扔鸡蛋 (得0个)

robi10

四级评论员
该会员在china-pub购买过此书
评价等级:  
发表于:2010-2-9 21:54:00
好书!提升对js的理解
您觉得呢? 送鲜花 (得0支)  扔鸡蛋 (得0个)
我要写评论
查看所有评论交流(共26条)