前 言 JavaScript是一门自由的语言,它内嵌于当前所有主流浏览器中,包括Internet Explorer、Firefox、Safari、Opera和Chrome。它是Web 2.0网站(如Facebook、Flickr、Gmail等)所使用的动态HTML和Ajax环境的后台动力源泉。本书面向那些已经掌握基本HTML(或许还包括一点CSS和JavaScript)并且有兴趣更深入学习的人们。例如,您可能希望创建更富于变化的菜单系统、提供鼠标悬停效果或支持Ajax功能。本书将介绍如何使用非常简单的JavaScript来完成所有这些事情及其他一些任务,并且不要求事先了解关于解决方案的任何内容。相反,它在每个分步描述的示例中提供详细的说明,因此您不需要到其他地方进行查询;每个解决方案都是完整的、可供立即应用的。 为便于理解所有这些插件,本书在可能的情况下,会有意忽略一些更高级的JavaScript技术,如面向对象编程(尽管有时它们的功能更加强大)。但不使用这些高级技术并不意味着这些插件的用途会受到限制;相反,它们简单地使用几行额外代码就能取得同样的效果,其运行速度也与压缩代码几乎相同。 您可以根据需要浏览本书,因为每一章都是独立的--当需要解决一个特定问题时,可以直接从相关章节了解所需的全部内容。 JavaScript简介 JavaScript已经有了超过15年的发展历史,并且现在比以往任何时候都更受用户青睐。这门语言最初由Netscape公司的Brendan Eich编写,名称是Mocha and LiveScript,JavaScript在1995年第一次被整合到Netscape Navigator浏览器中,同时Netscape增加了对Sun公司Java技术的支持。 JavaScript与Java大相径庭,但作为Netscape与Sun Microsystems公司达成的市场协议的一部分,它被确定为这个名称,以期望能从当时的Java语言热中受益。为了与这个命名相适应,所有Java关键字在JavaScript中都被保留了下来,它的标准库遵循Java的命名约定,并且其Math和Date对象都基于Java 1的类。此外,商标名“JavaScript”现属于Oracle公司--但是它们的相似性也仅限于此。 Microsoft的相应版本Jscript在一年后作为Internet Explorer 3的一个组件发布,如人们所预期的,它在几个重要方面差别极大,从而使得它不是100%与JavaScript兼容。令人遗憾的是,直到今天情形依然如此,因此本书中有些插件的操作将因运行它们的浏览器而异。 与其他用于创建网站的语言(例如Perl、PHP和Ruby)不同,JavaScript在Web浏览器内运行,而不是在服务器上运行。这使得它成为一个用于创建动态网页的完美工具,因为它可以实时修改HTML元素。它还是Web 2.0 Ajax功能的支持技术,通过这种技术,数据是在Web服务器和Web浏览器之间进行后台传输的,而用户并不会感觉到这些数据传输。 您将从本书第2章了解到,JavaScript的强大功能在于它访问HTML的文档对象模型(Document Object Model,DOM)的能力,通过它可以单独访问网页上的每一个元素(读取或修改其值),并且可以动态创建和删除元素,以及分层叠加并移动这些元素。甚至可以将Web浏览器窗口当成一块空白画布,然后使用JavaScript和DOM完全从头开始建立整个应用程序和游戏屏幕(但这样做需要一些非常高级的编程技巧)。 因为Oracle拥有其名称的商标,所以JavaScript在被提交给ECMA(European Computer Manufacturers Association,一家非盈利性标准化组织)之后被正式命名为ECMAScript。 JavaScript框架 虽然近年来人们在标准化方面采取了一些措施,但是不同的浏览器开发人员仍然会以略微不同的方式来实现JavaScript,因此导致出现了大量JavaScript框架,例如,JQuery、YUI、Mootools等。这些技术处理所有的不一致性,提供了一个函数集,可以直接调用它们而不需要考虑浏览器之间的差别。 本书中所介绍的插件提供了这些框架的大部分功能,但并没有实际构建一个框架。过程化编程技术不仅使得它们非常易于使用,而且使得人们可以很容易地理解它们的用途。此外,虽然这些插件常常相互关联,并且相互利用其他插件的功能,但是也可以仅将单个插件及其依赖插件复制到某个网页中。另一方面,对于主要框架来说,很难仅仅抽取所需要的函数。 包含全部插件的压缩文件大小仅仅为25Kb左右,它所使用的非常少量的额外带宽意味着通常不需要抽取几个函数:只需在任意网页中添加一个指向该文件的链接,就可以访问所有这些插件了。 本书内容 本书提供了100个可供直接使用的插件,通常只需要一次简单的函数调用就可以对其进行使用。当然,因为所有项目都有各自的特点,所以本书仅仅提供了最核心的插件,并且尽可能少地涉及布局和风格方面的内容。读者可以非常方便地将这些函数插入到自己的程序中,然后对它们进行修改以便满足自己的需要。 本书所介绍的各种插件为各种范围的问题提供了简单快速的解决方案,从而避免了当每次需要一个新功能时都重新对其进行设计和实现--因为您所需要的模块很可能正好就是本书中的一个插件。即使不是,因为对每个插件都进行了全面透彻的介绍,所以可以很方便地利用不同插件中的代码片段来建立自己的模块。 关于插件 本书中的所有插件都是可以直接运行的,既可以手工输入(如果不能访问Internet),也可以从下载,在这个网站上,所有插件都被完整地存储在一个单独文件中。 当访问这个网站时,可以按章来浏览这些插件,并根据不同颜色的突出显示来查看JavaScript代码。从那里可以直接将插件复制、粘贴或下载到自己的计算机上。 包含和未包含的内容 虽然本书的首要目标是为JavaScript新手提供丰富的可直接利用的函数和例程资源,但是它的另一个目标是帮助这些人提高水平,建立自己的编程工具包。因此,本书中的全部插件都提供了详细的文档,对其进行了详细的解释,并提供了关于如何对其进行改进和扩展,以及如何修改它们以更符合自己需求的建议。 尽管本书不是编程手册和教学指南,但还是希望您能够仔细阅读这些插件的详细说明,而不是仅仅在自己的项目中使用这些插件,这样,您将从中领会到许多程序员多年来所发现的大量提示和技巧,从而在潜移默化中学习到关于JavaScript编程语言的更多知识。 插件许可 读者可以在自己的项目中任意使用这些插件,并且可以根据需要对其进行修改,而不需要注明引自本书--但是如果读者愿意注明,那么将非常感谢。 然而,如果未经出版商授权,那么读者不允许以任何方式销售、转让或分发这些插件,包括印刷格式和电子格式。 配套网站 本书提供了一个配套网站,从这个网站可以下载全部100个插件,以及用于进行实验的示例代码。 这个网站最好与本书配套使用。在阅读每一章时,可以打开网站上相应的链接,然后就可以在屏幕上查看每一个插件(采用彩色突出显示的语法)。通过这种方法可以非常容易地看清每个程序的结构。 如有必要,可以单击一个链接,从而将代码复制并粘贴到自己的程序中。或者也可以将全部插件下载到自己的计算机上,然后从自己的计算机上将它们添加到自己的网站中。