前言
虽然,服务器端的Netscape Enterprise Server和Active Server Pages(ASP)都曾经支持JavaScript,但它主要还是Web浏览器使用的客户端脚本语言。目前,JavaScript主要用于帮助开发者与网页和Web浏览器窗口本身进行交互。
不太严格地说,JavaScript是一种基于Java的面向对象程序设计语言,它因为能够以嵌入式applet的形式用于Web而流行起来。虽然JavaScript的语法和程序设计方法都与Java相似,但它并非Java的简化版本。相反,JavaScript是一种独立的语言,它存在于全世界所有的Web浏览器中,能够增强用户与Web站点和Web应用程序之间的交互。
本书从最早期Netscape浏览器中的JavaScript开始讲起,直到当前它对XML和Web服务的具体支持。你将学到如何扩展这种语言,以使它适应特殊的需求;学到如何在没有Java或隐藏框架这些媒介的情况下,创建无缝的客户机-服务器通信。简而言之,你将学到如何应用JavaScript解决Web开发者面对的各种问题。
本书内容
本书针对开发人员介绍JavaScript,包括很多高级的、重要的特性。
本书开始部分探讨了JavaScript的起源及其迄今为止的发展。之后详细介绍了构成JavaScript实现的各个组件,着重介绍了ECMAScript和DOM(文档对象模型)这样的标准。此外还讨论了在不同Web浏览器中使用的JavaScript实现的不同。
基于上述讨论,本书开始介绍JavaScript的基本概念,包括面向对象程序设计、继承以及它在各种标记语言(如HTML)中的使用。在探讨了浏览器检测技术,并介绍了在JavaScript中如何使用正则表达式后,本书对事件和事件处理进行了深度考察。之后,应用所有这些知识来创建动态的用户界面。
本书最后一部分讨论在Web应用程序中部署JavaScript解决方案的相关问题,包括错误处理、调试、安全性、优化/模糊化、XML和Web服务。
读者对象
本书针对以下三类读者群:
? 熟悉面向对象程序设计方法的有经验的开发人员。他们由于JavaScript与传统的OO语言(如Java和C++)相关,所以想学习它。
? 尝试提高Web站点和Web应用程序可用性的Web应用程序开发人员。
? 想更好地理解JavaScript语言的初学者。
此外,本书也适用熟悉下列相关技术的读者:
? XML
? XSLT
? Java
? Web Services
? HTML
. ? CSS
本书不适合没有计算机科学基础背景的初学者,也不适合只想在Web站点添加一些简单用户交互特性的读者。这些读者应该阅读人民邮电出版社即将出版的《JavaScript基础教程》。
环境配置
要运行本书中的示例,需要下列软件:
? Windows 2000、Windows Server 2003、Windows XP或Mac OS X;
? IE 5.5或更高版本(Windows)、Mozilla 1.0或更高版本(所有平台)、Opera 7.5或更高版本(所有平台)、Safari 1.2或更高版本(Mac OS X)。
可以从图灵网站www.turingbook.com或http://www.wrox.com的本书配套网页下载书中示例的完整源代码。
本书结构
第1章 JavaScript是什么
这一章解释了JavaScript的起源,包括它是怎样产生的,如何发展的以及现状如何。介绍到的概念包括JavaScript与ECMAScript、DOM(文档对象模型)和BOM(浏览器对象模型)之间的关系。此外还讨论了与ECMA和W3C的有关标准。
第2章 ECMAScript基础
这一章分析了JavaScript所基于的核心技术——ECMAScript。从变量和函数的声明到原始值与引用值的使用和理解,本章描述了编写JavaScript代码必需的基础语法和概念。
第3章 对象基础
这一章的重点是用JavaScript进行面向对象的程序设计(OOP)的基础,涵盖的主题包括用各种方法定义定制的对象、创建对象实例以及了解JavaScript和Java中OOP的异同。
第4章 继承
这一章继续探讨JavaScript中的OOP,描述继承机制的工作机理,其中讨论了各种实现继承的方法,并且还比较了它们与Java中继承性的异同。
第5章 浏览器中的JavaScript
这一章解释了如何把JavaScript嵌入到用各种语言(如HTML、SVG和XUL)编写的网页中。此外还介绍了BOM(浏览器对象模型)以及它的各种对象和接口。
第6章 DOM基础
这一章介绍了在JavaScript中实现的DOM,包括专门适用于Web开发者的DOM概念。之后,将这些概念应用在使用HTML、SVG和XUL编写的示例中。
第7章 正则表达式
这一章的重点是JavaScript实现的正则表达式,这是进行数据验证和字符串操作的强有力工具。本章探讨了正则表达式的起源、语法以及它在各种程序设计语言中的用法。本章的结尾探讨了正则表达式在JavaScript实现中的异同。
第8章 检测浏览器和操作系统
这一章解释了编写能在各种Web浏览器上运行的JavaScript脚本的重要性。它讨论了两种检测浏览器的方法,即对象/特性检测法和user-agent字符串检测法,并逐一列出了每种方法的优点和缺点。
第9章 事件
这一章讨论了JavaScript中最重要的概念之一——事件。事件是把JavaScript和任何用标记语言编写的Web用户界面连接在一起的主要方法。本章介绍了事件处理的各种方法和事件流的概念(包括冒泡和捕获)。
第10章 高级DOM技术
这一章介绍了一些较高级的DOM特性,包括范围和样式表操作。本章给出了一个例子,用于说明何时以及如何使用这些技术,此外还讨论了如何实现跨浏览器的支持。
第11章 表单和数据完整性
这一章讨论了使用表单时数据验证的重要性。在介绍处理验证的方法时,还应用了前面介绍的概念,如正则表达式、事件和DOM操作。
第12章 表格排序
这一章应用前面介绍的多种特性来实现客户端的动态表格排序。其中包括用JavaScript进行排序的深度讨论,以及如何用事件、DOM操作和比较运算符开发各种Web浏览器都能使用的通用表格排序协议。
第13章 拖放
这一章解释了拖放的概念以及它们在JavaScript和Web浏览器中的应用。其中讨论了系统拖放和模拟拖放的概念,章末创建了一个能跨浏览器使用的标准拖放界面。
第14章 错误处理
这一章通过讨论try...catch语句和onerror事件处理函数的用法来介绍JavaScript中事件处理的概念。另一个主题是用throw语句创建定制的错误消息以及JavaScript调试器的用法。
第15章 JavaScript中的XML
这一章介绍了JavaScript用于读取和操作XML(可扩展标记语言)数据的特性,解释了各种Web浏览器中的支持和对象的不同,还为跨浏览器编码提供了建议。此外,本章还介绍了如何用XSLT语言转换客户端的XML数据。
第16章 客户端与服务器端的通信
这一章探讨了JavaScript与服务器通信的各种方法。这些方法包括使用cookie和基于JavaScript的HTTP请求。此外,这一章还解释了如何在不使用隐藏框架的情况下实现GET和POST HTTP请求。
第17章 Web服务
这一章介绍了如何用JavaScript提供Web服务,其中讨论了在IE和Mozilla中使用的不同方法,还为没有内置Web服务支持的浏览器提供了一种添加Web服务的基本解决方案。
第18章 与插件进行交互
这一章解释了JavaScript与各种浏览器插件(如Java applet、SVG文档和ActiveX控件)之间的通信方法。其他主题包括如何编写能与JavaScript一起使用的插件。
第19章 部署问题
这一章的重点是完成JavaScript编码后的操作。本章讨论了在把JavaScript解决方案部署到Web站点或Web应用程序之前要做的一些操作。其中的主题包括安全性、国际化、优化和知识产权保护。
第20章 JavaScript的未来
这一章考查了JavaScript的未来,介绍了这种语言的发展方向。其中讨论了ECMAScript的ECMAScript 4和XML。
本书约定
为了帮助读者更充分地利用本书,方便阅读,我们在本书中采用如下约定:
在这样的矩形框中给出的内容都是重要的、不应忘记的信息,它与周围的内容直接相关。
对当前讨论的主题可能有一些提示、技巧和旁注,这些都将用楷体显示。
正文中还包括以下样式:
? 在初次介绍重要术语时,使用楷体突出强调;
? 用Ctrl+A这样的形式说明键盘按键;
? 正文中的文件名、URL和代码使用Courier字体显示;
? 代码有两种形式:代码示例中,新出现的代码或重要代码用灰色背景突出显示;对当前讨论不太重要的代码或者是前面已经出现过的代码不用灰色背景强调。
源代码
在使用本书中的例子时,你可以手工键入所有代码,也可以直接使用本书在网上随附的源代码文件。本书中用到的所有源代码文件都可以从www.turing.com或www.wrox.com下载。访问Wrox网站时,只要找到本书的英文版书名(Professional JavaScript for Web Developers)[可以使用搜索(Search)框,也可以使用某个书目列表],并点击该书详细信息网页上的下载代码(Download Code)链接,就可以得到本书的所有源代码。
由于会有许多书名字雷同,最佳的方法是利用ISBN搜索,本书的英文版ISBN是0-7645-7908-8。
下载代码之后,你只需用最习惯的压缩工具解压就可以了。此外,还可以在Wrox的主下载页面http://www.wrox.com/dynamic/books/download.aspx处找到本书及其他Wrox出版的书的配套代码。
勘误表
我们一直努力确保代码或正文中没有错误。不过,是人都会犯错误。如果你发现了我们出版的书中的错误,不论是拼写错误还是代码错误,都请告知我们,我们将非常感谢。这样能节省其他读者的时间,同时还能帮助我们提高内容的准确性。
在http://www.wrox.com处,用Search框或名字列表找到本书的名字,然后在本书的主页面上点击Book Errata链接,可以找到本书的勘误表。在这个页面上可以找到由Wrox的编辑发布的、已经发现的所有的错误。在www.wrox.com/misc-pages/booklist.shtml处可以找到Wrox出版的所有书的列表,其中有每本书的勘误表的链接。
如果在Book Errata页面上没有找到你发现的错误,请访问www.wrox.com/contact/ techsupport.shtml页面,填写其中的表单,把你发现的错误发送给我们。我们将检查你提交的信息,如果正确,就会把它发布在本书的勘误表页面上,并在本书以后的版本中纠正这一错误。
p2p.wrox.com
要与作者或其他人讨论有关问题,请加入P2P论坛(p2p.wrox.com)。这个论坛是一个基于Web的系统,你可以在此发表有关Wrox图书和相关技术的消息,并与其他读者和技术用户交流。论坛针对你感兴趣的主题提供订购功能,论坛新发布相关消息时,会通过电子邮件通知你。Wrox作者、编辑、其他行业专家以及其他读者也会造访这些论坛。
在http://p2p.wrox.com上,你会看到许多论坛,这些论坛不仅可以帮助你阅读本书,还有助于你开发自己的应用程序。要想加入论坛,只需遵循以下几个步骤:
(1) 访问p2p.wrox.com,并点击Register(注册)链接;
(2) 阅读使用条文,并点击Agree(同意);
(3) 填写加入论坛的必要信息,如果想提供其他可选信息,也可以相应填写,点击Submit(提交);
(4) 你将收到一个电子邮件,其中说明如何验证你的账户,并完成加入过程。
如果只是阅读论坛中的消息,无需加入p2p。不过,如果你想发布自己的消息,就必须加入论坛。
一旦加入,就可以发布新的消息了,还可以对其他用户发布的消息做出响应。你在任何时刻都可以在Web上阅读消息。如果希望某个论坛能通过电子邮件向你发送新发布的消息,请点击论坛列表中该论坛名旁边的Subscribe to this Forum(订购此论坛)图标。
要了解如何使用Wrox p2p的更多信息,请阅读p2p FAQ,在此解释了这个论坛软件如何工作的相关问题,另外还回答了与p2p和Wrox图书有关的许多常见问题。要阅读FAQ,可以点击任何p2p页面上的FAQ链接。
本书索引可以从图灵网站的本书配套网页下载。索引中的页码为英文原书页码,与书中边栏的页码一致。
致谢
尽管本书的封面上只署了一个名字,但是完成本书的却不只一人。没有众人的帮助,本书是不可能完成的。
首先要感谢的是Wiley出版公司的每一个人,尤其是Jim Minatel和Sharon Nash,他们为每位新作者提供了所有必需的指导和支持。
有很多人就一本好的JavaScript书应该具有什么内容为我提供了许多意见,包括Keith Ciociola、Ken Fearnley、John Rajan和Douglas Swatski,向他们致谢。
特别感谢审阅本书初稿的每个人,他们是Erik Arvidsson、Bradley Baumann、Guilherme Blanco、Douglas Crockford、Jean-Luc David、Emil A. Eklund、Brett Fielder、Jeremy McPeak和Micha Schopman。他们的每一条意见都使得本书更趋于完美。
感谢Ed Bernard和Frances Bernard医生,他们在本书编写过程中以及过去几年间,使我保持最好的健康状况。
最后,感谢我的家人——妈妈、爸爸和Greg还有我善解人意的女友Emily。他们的爱和支持帮助我成就本书。