http://images.china-pub.com/ebook35001-40000/39957/zcover.jpg

《JavaScript DOM高级程序设计》

【原 书 名】 AdvancED DOM Scripting:Dynamic Web Design Techniques
【原出版社】 friends of ED
【出 版 社】 人民邮电出版社
【出版日期】 2008 年7月
【页 码】 457
【定价】 59.00-75折价44.25

DOM(Document Object Model,文档对象模型)脚本编程经常会被误解为Web上的某种脚本编程,实际上,纯粹的DOM脚本编程只包括W3C DOM规范中所涵盖的特性和方法。也就是说,不包括任何专有浏览器的特性。在理想的世界里,我们可以遵循标准,忽略专有特性,最终完成可以在任何设备中运 行的脚本。但是,这不是一个理想的世界。众所周知,并非所有设备或浏览器都与W3C标准兼容,这就给像我们这样的开发者提出了问题:什么时候需要适应每一 种设备或浏览器,怎样才能保证忠实于W3C DOM?

当试图回答这些问题,以及在保持真正的DOM符合性基础上处理多浏览器时,我们萌生了写这本书的想法。本书不仅对以上问题给出了答案,而且还涉及到下列主题:
深入W3C DOM规范,并筛选出经常容易被误解的、仍然为非标准浏览器提供等价选项的细小问题。
进一步探讨新方法,例如Ajax客户端-服务器端通信,冲破Ajax的局限性以提供更具交互性的体验。
体验一些主要的第三方资源,通过它们省掉可观的日常工作量。
理解并创建自己日常所用的DOM方法库。

这 些能力的新发现也带来了许多诱惑。由于热衷于新特性而偏离了基本常识,导致Web应用程序设计模糊的DOM脚本编程的例子太多了。因而,纵贯全书作者都会 强调最佳实践的价值,并提供很多基于可用性和可访问性的解决方案,这样对最终用户和你--开发者或设计者而言,都是有益的。

你可以把这本书放在计算机旁作为参考,或者从头到尾读完它,这完全取决于你。无论采取哪种方式,只要你坚持学习完本书中的理论介绍、代码、例子和案例研究,就会深刻地发现自己已经很好地理解了书中那些高级概念的含义,不仅知其然,而且更知其所以然。

本书读者对象

本书适合对DOM感兴趣并希望进一步提升自己的所有Web开发者和设计者。通过本书通俗易懂的讲解,读者能够轻松地理解高级的DOM编程概念。如果读者对DOM脚本编程和Web标准有一些基本的经验,那么通过学习本书收获会更大。

本书组织方式

本书分为三个主要部分,通过学习全书内容,读者将能构建起属于自己的DOM实用方法库。书中的每一章都以前一章学习的概念为依托,因而本书的每一部分都是一个整体,每一章也并非完全独立。

第 一部分,“深入理解DOM脚本编程”,涉及W3C DOM规范的方方面面,包括非标准的浏览器支持和不支持的内容。从一开始就以最佳实践为榜样,然后你将了解到DOM2 HTML和DOM2核心规范,同时还有DOM2事件和DOM2样式规范。本部分中的每一章都会给出一些不针对特定浏览器(browser- agnostic)的例子。而且,你也将着手构建自己的脚本程序库,并往其中添加访问和操纵DOM、样式以及事件的各种方法。这些方法将不针对特定的浏览 器,因此你可以很容易地在公共方法(你将自己创建)的基础上建立自己的应用程序。第一部分最后的第六章将会完成一个案例学习,在这一章中,你将学会建立一 个交互式裁剪和调整图像大小的工具。

在介绍了操纵和访问文档的各个方面知识之后,第二部分,“浏览器外部通信”,将以Ajax和客户端- 服务器端通讯为主题。在这一部分中,作者没有停留在介绍简单的做法上,而是深入解释了相应的内部工作机制,同时,也没有忘记介绍整合Ajax 界面时可能遇到的麻烦。第二部分最后把这些技能用于实战检验,综合运用传统和当前的通讯方法,创建一个带有实时进度条的文件上传程序。

最 后,在第三部分,“部分高级脚本编程资源”中,作者集中介绍了一批第三方脚本编程资源,包括库和API(Application Programming Interfaces,应用程序编程接口)。你将在这一部分学习到如何利用主要的 DOM 脚本库来提高自己的开发效率,也包括使用一些视觉效果,为自己的 Web 应用程序添彩。同时,你还将学习如何通过可自由使用的API来整合交互式地图和项目管理工具。这些资源将为你提供高级编程能力,同时最大限度地减少你的重 复性工作--但只有在对第一和第二部分内容深入理解的基础上,才能更好地体会到这些资源的价值。本书以Aaron Gustafson撰写的一个案例学习作为结尾,这个案例把select元素提高到了一个全新的水平。

作者没有提供附录,而是向读者公布 了一个网站http://advanceddomscripting.com。在这个网站中,读者可以下载到本书的源代码和额外一些例子和参考文献。作者 将在这个网站中发布与DOM脚本编程相关的最新的重要消息,读者可以经常访问这个网站,以便与时俱进。



朋友们的留言

  1. smoke520 | 06月 14th, 2008 at 14:47

    这本书也是等待很久的了, 卓越一有就买。

  2. admin | 06月 14th, 2008 at 15:44

    欢迎多提宝贵意见! :)

  3. soni | 06月 16th, 2008 at 14:15

    昨天逛书店看到了jquery那本,这本没看到。
    其实我主要是看这本去了。

  4. soni | 06月 16th, 2008 at 14:16

    为什么每次的评论验证码都是v1cf?
    补充一下,我的浏览器是opera。

  5. admin | 06月 16th, 2008 at 14:44

    可能是换模板造成的。

  6. 琳琳的小狗 | 06月 17th, 2008 at 09:42

    非常棒,预祝译作能大卖:)希望站长再接再厉,后续还有不少经典js书呢,嘿嘿……
    btw,这次的验证码是“han4”,汗死?哈哈

  7. admin | 06月 17th, 2008 at 10:16

    嗯,有点奇怪,每个用户都给唯一验证码,这是始料不及的,呵呵~

  8. 小曾 | 04月 22nd, 2010 at 11:19

    第20页的
    function exampleLibraryMethod(obj){
    if(!(obj = $(obj))) return false;
    return obj;
    }
    少了一个return obj;

  9. 小曾 | 04月 22nd, 2010 at 13:58

    第22页的中间的
    //取消默认时间
    ADS.eventPreventDefalut(W3CEvent)

    是不是应该在eventPrevent中间有个”.”
    ADS.event.preventDefalut(W3CEvent)

  10. 小曾 | 04月 22nd, 2010 at 14:00

    呵呵,不好意思,刚才没看下面了,一直在琢磨上面的代码。下面写清楚了这个函数在第四章添加了,呵呵,把这两条留言删掉吧,不好意思。

  11. 为之漫笔 | 04月 22nd, 2010 at 21:36

    @ 小曾

    没关系,这本书最近可能会重印(市面上好像不多了),如果有错误,还请及时反馈,多谢。

  12. 小曾 | 04月 24th, 2010 at 15:56

    25页的这个函数insertAfter()
    function insertAfter(node,referenceNode){
    if(!(node=$(node))){ return false};
    if(!(referenceNode=$(referenceNode))){ return false};
    return referenceNode.parentNode.insertBefore(node,referenceNode.siblingNode);
    }
    我感觉它考虑到欠缺。如果是在parent里面只有一个子节点referenceNode,那么就不存在referenceNode.siblingNode,所以我觉得这里还要进行一下判断。

  13. 小曾 | 04月 24th, 2010 at 16:43

    还有26页的
    parent.firstChild.parentNode.removeChild(parent.firstChild);

    为什么不直接用
    parent.removeChild(parent.firstChild);
    我试过两个的效果都一样啊
    其中有什么深意吗?
    望指点。

  14. 小曾 | 04月 25th, 2010 at 18:52

    64页的中的
    function doubleCheck() {
    this.message = ‘Are you sure you want to leave?’;
    }
    doubleCheck.prototype.sayGoodbye = function() {
    return confirm(this.message);
    }
    initPage() {
    var clickedLink = new doubleCheck();
    var links = document.getElementsByTagName(‘a’);

    for (var i=0 ; i<links.length ; i++) {
    ADS.addEvent(links[i], 'click', clickedLink.sayGoodbye);
    }
    }
    ADS.addEvent(window,'load',initPage);
    其中
    initPage(){

    }
    这个函数的写法不规范,应该改一下。

  15. 为之漫笔 | 04月 26th, 2010 at 22:47

    @ 小曾

    非常抱歉,最近特特特忙。所以,能不能把这些“读书笔记”式的疑问整理出来,通过邮件一块发给我(邮件地址见译者序),等我有时间再集中回复你,OK?

  16. 小曾 | 04月 27th, 2010 at 14:21

    好的,没问题,一切听峰哥指挥!

我来说两句儿

可以在留言中使用以下标签 :<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>