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) 新加的或修改过的代码通常会以加粗的等宽字体表示。
.(3) 伪代码和变量输入以斜体等宽字体表示。
(4) 对于需要提醒读者注意的内容,会像下面这样突出排版:
(5) 有时候某一行代码可能会超出书本的宽度,这时将使用像下面这样的箭头图标
这一部分的代码非常、非常、非常地长,应该全都写在不带有换行符的同一行中。
(6) 为了节省版面,许多例子代码中都会包含“……省略的代码…… ”这样的文本行。这行文本表示相应位置处省略了一部分代码。这样做可以使当前例子中的主要代码更突出。在有些情形下,也会存在代码前后都有“……省略的代码……”字样的情况,这也是为了更好地在上下文中显示代码。
(7) 在要求读者按照作者的指示构建例子的情况下,会以一个带注释的结构开头。
(8) 在下载的本书源代码中,读者可能也会注意到书中没有出现的一些注释。书中删除了这部分注释,保证印刷出来的代码不致于太冗长。
阅读本书的条件..
创造力、兴趣和学习的渴望就是阅读本书的全部条件,熟悉一些DOM 、JavaScript 、Web 标准和CSS的基础知识当然也是有益无害的。只要有可能,作者会尝试着讲解一些高级主题,而且尽力以一名Web初学者都能够理解的方式来进行。
本书中的例子代码已经在下列浏览器中测试通过了。在书中,作者还将针对每种浏览器给出相应的提示:
Firefox 1.5+
Microsoft IE 6+
Safari 2+
Opera 9+
在其他兼容标准的浏览器中,同样可以运行本书的例子。但比较早的浏览器只能降级使用不含DOM脚本的版本。
如何下载代码
如果担心输入本书的全部代码会把手指头累得抽筋,作者建议你访问friends of ED 的网站(http://friendsofed.com )并从中下载本书的源代码。同时在这个网站上,你还可以找到与Web 标准、DOM、CSS以及Flash相关的其他好书。
如果你觉得不满足,那么还可以访问本书的站点(http://advanceddomscripting.com),其中除了源代码之外,还会提供与DOM脚本编程相关的更多信息。
如何联系作者
读者如果有任何问题、意见和想法,可以随时与作者联系,电子邮件地址是 jeff@advanceddoms cripting.com 。同样,读者也可以经常浏览一下本书的网站 http://advanceddomscripting.com ,作者将在此发表一些更新的内容和勘误信息,以及其他对读者有帮助的第一手资料。
Aaron Gustafson 的电子邮件地址是ads-book@easy-designs.net 。
致谢
这几年来,在我的人生旅途中,有许多人都在影响着我——家人、朋友、相识的和不相识的,正是所有这些人的帮助才使得本书得以出版。要提及每个人恐怕不易,所以这里就一并致谢了。
感谢Chris Mills 给我这次机会,让我能够深入到自己热爱的主题中。如果没有他的指导,我根本无法理清头脑中那些混乱的想法。而且,也要感谢friends of ED 和Apress 出版社的团队成员,包括Kylie Johnston 、Heather Lang 、Laura Cheu 以及隐身于幕后的所有人,正是来自你们的反馈才使得这本书更加完善,从而让我有了一番不同的感受。
感谢Aaron Gustafson 撰写了一个极好的案例。学习完这个案例一定会让读者因为超越了基本知识而感到惬意。
感谢Cameron Turner 和Victor Sumner ,他们测试了我编写的代码。相信他们测试出的或没测试出的问题一定不少,但读者的评论和鼓励一定会让我更加努力。
感谢那些慷慨地共享他们知识和思想的每一个人。如果没有他们深刻的评论、博客、图书、谈话和讨论,不可能有DOM脚本编程、Web 标准的进步和创新。谢谢大家。
特别感谢我的妻子Stephanie 和她给我的爱。感谢她在照顾我们刚出生的孩子和我时所表现出的耐心及给予我的极大的理解。没有她我将一事无成。
最后,感谢亲爱的读者花时间看这本书。我衷心地祝愿你理解我所讲的一切内容。
Jeffrey Sambells
有这么多人我得感谢,不过我只是撰稿人之一,所以还是简略点儿好。感谢Brothercake,他的表达天分着实给我的书稿增色不少。感谢Jeremy Keith,他让我说得更头头是道。感谢Shaun Inman,This is Cereal的设计真让人深受启发啊。感谢Jeffrey Zeldman,他坚定了我当一名好作者的信心。感谢Molly Holzschlag,我取得的成功皆应归功于她,在此,不管怎么表达谢意都是不够的(但我还是要表达我的谢意)。最后(也是最重要的),感谢Kelly,有多少个深夜和周末,我都在忙于编写程序,再写书分析程序,她都默默忍受了。我要对她说:我爱你。...
Aaron Gustafson