第一章 注意,支持客户端 JavaScript的渊览器不是只冇 Netscape和 Internet Explorer。例 如,Opera(htp:∥wn.opra.com)也支持客户端Javascript.。但是,由于Netscape 和 Internet Explorer r据了大部分的市场份额、所以本书只对它们进行了讨论。其 他浏览器实现的客户端 Java Script应该遵循这两种浏览器的实现 同样地,能够嵌入Web浏览器的程序设计语言也亻是仅有 Javascript这·种。例如 Internet Explorer就攴持Ⅴ SCript这种语言。它是 Microsoft公司的Ⅴ isual basic语 言的变体,虽然也提供了许多与 Javascript相同的特性,但是却只能在Mcoo公 川的浏览器中使用。HTML4规汇在讨论HIML标记< script>时采用了Tcl程 序设计语言作为嵌入式脚本语占的一个例子。尽管没有什么主流浏览器为此而攴持 Tl语},但是·种浏览器要攴持这种语言也是很容易的。 木书以前的版木对 Netscape洲览器的介绍比对 Microsoft浏览器的介绍全面得多 仔在这一倾向的主要原因于 JavaScript是 Netscape公司发明的,而且它(至少 段付间内)在Web浏览器市场中占有统治地位。不过这种对 Netscape的倾向在本 的每一个后续版本中都有所减小,当前的这个版本重点介绍标准(如 ECMAScript 和W3CDOM),而不在于特定的浏览器、尢论如何、读者仍能从旧版本沿袭下来 的材料中发现这种对 Netscape的倾向。 1.4其他环境中的 Javascript Javascript是一种常规用途的程序设计语言,它的使用芹不仪仪限于Web浏览器。 JavaScrip能够嵌入任何应用程序,用来为程序提供脚本的功能。事实上,从一开 始, Netscape公司的web服务器就含有 Javascript6解释器,以便能够用 Javascript 编写服务器端的脚本。同样的, Microsoft公司除了在 nternet Explorer中使用了 jScript f解释器外,还在它的Iweb服务器和 Windows Scripting Host产品中使用 了该解释器 Netscape公司和 Microsoft公同都向那些想把 Javascript解释器嵌入自己应用程序的 公司和程序设计者开放了它们的 Javascript解释器。 Netscape公司的解释器是作为 开放资源发布的,目前通过 Mozilla组织可以得到它(详情请登录hp:/w mozilla.org/js/) Mozilla织实际上提供了两种不同版木的 JavaScript I5解释器
JavaScript概述 个版太是用C语言编写的,称为 SpiderMonkey。另个版本是用Java编写的,木 书称之为Rhno 我们希看到越来越多的应用程序将 Javascript作为嵌入式脚本语言(注1)。如果 要为这样的应用程序编写脚本,那么你就会发现本书的前半部分非常有用,它介绍 Javascript语言的核心但是那些介绍特定Web浏览器的章节可能就不适用于你 的脚本了 1.5客户端的 Java Script:网页中的可执行 内容 当一个Wb浏览器嵌入了 Javascript解释器时、,它就允许可执行的内容以 Javascript 脚本的形式分布到 Internet。例1-展示了…个简单的嵌入网页中的 Javascript程 序、或者说脚本 例1-1:一个简单的 Javascript程序 docUment,w:i分(“x7bleO: CecEc::a…,"h2>"); <lucy antr I 把这个脚本装载进个启用 Javascript的渊览器中后,就会产生如图1-所示的输 出!。 t: Actionscript是 Macromedia公司的 Flash5中使用的一脚本话言,它是在 CMAScript标准发革后被模型化的,但它不是真正的 Javascript
笫一章 3Factorials-Microsoft Internet Explorer [B地山” Table of factorials 1=1 2|=2 3=6 41=24 6|=720 7=5040 8!=40320 9=362880 Done 图1-1:用 Java Script生成的一个网页 在这个例子中可以看到,标记< script>和</ script>是用来在HTML文件中嵌入 Java Script代码的。我们将在第十二章中了解到更多有关< script>标记的内容。这 一例子要说明的 JavaScript的主要特性是方法 document. write()的使用(注2) 这一方法用于动态输出由Web浏览器解析并显示的HM文本。在本书中我们会多 次见到它 除了能够控制网页中的内容之外, JavaScript还能够控制浏览器和出现在浏览器中 的HTML表单的内容。我们将住本章后面的小节中详细的学习 Javascript的这些功 能,而且本书后面的章节中还有更加详细的介绍。 JavaScript不仅能够控制HTML文档的内容,而且能够控制这些文档的行为。也就 是说,当你在输入域中输入了一个值或者点击了文档中的一幅图像时, JavaScript程 序就会以某种方式对此做出响应。它是通过给文档定义“事件处理器”( even t handler)实现这一点的。所谓事件处理器,就是在特定的事件(如用户点击了一个 方法是函数或过使用的面向对象的术语,在整本书中都会看到它
Javascript概述 按钮)发生时要执行的 Javascript代码段。例1-2展示了…个非常简单的HTML表 单的定义,这个表单含有一个响应按钮点击事件的事件处理器。 例1-2:一个定义了 Javascript事件处理器的HTML表单 <input type=button onclick="aler=( You clicked the button); 图1-2说明了点击按钮之后的结果。 Help Click here [JavaScript Application]x 图1-2: Java Script对一个事件的响应 例1-2中使用的性质 onclick原本是 Netscape公司对HTML的一个扩展,是专门为 客户端 Javascript而添加的。但是,现在HTML的4.0版本已经将这一性质和其他 的事件处理器性质标准化了。所有的 Javascript事件处理器都是像该例一样用 HTML性质定义的。onc1ick性质的值是个 Javascript代码串,它是在用户点击 了按钮的时候执行的。在这种情况下, onclick事件处理器将调用 alert()函数 在图1-2中可以看到,a1ert()函数会弹出个对话框以显示指定的消息 例1-1和例1-2只不过使用了客户端 JavaScript最简单的特性。 JavaScript在客户端 真正的强大之处在于脚本能够访问基于网页内容的对象层次。例如,客户端 JavaScript程序可以访问并操作文档中出现的每一幅图像,可以与嵌入在HTML文 档中的各个Java小程序和共他对象通信与交互。一旦掌握了 Javascript语言的核心
16 笫一章 邡么在网页中有效地使用 Javascript的关键就是学会使用浏览器显示出来的文档对 象模型(DOM)的特性。 1.6客户端 Javascript的特性 JavaScript另·种叮能的用途是编写执行任意计算的程序。例如,可以用它编写计 算斐波纳契数列或检索素数的简单脚本。不过,在Web和Web浏览器环境中,该 语言还有史加有趣的应用那就是基用户在HTML表单中提供的信息在线地计算 销售税。前面已纤提到过, Javascript的真正强大之处在于它支持的基于览器和 文档的对象。为了让你对 Javascript的潜力有所了解,接下来的儿节列出并解释 客户端的 Javascript和它支持的对象的重要能力。 16.1控制文档的外观和内容 我们已经知道, Javascript的 Document对象使用 write(方法,可以在浏览器解 析文档时把任何HTML文本写入文档中。例如,可以把当前的月期与时添加到 个文档中,或者在不同的平台上显示不同的内容 也可以使用 Document对象从头开始生成-个完整文档。 Document对象的属性允许 你指定文档的背景颜色、文本颜色以及文档中的超文本链接颜色。其实这就是生成 动态的、有条件的HTML文档的能力,这种技术在多框架的文档中更加适用。实际 上,在某些情况下, Javascript程序还可以利用动态生成框架内容这一技术完全地 替换一个传统的服务器端脚本 Internet Explorer4和 Netscape4都支持生成动态HTML效果的专利技术,这种效 巢使得文档内容能够动态生成,动态移动和动态的改变,IE4还支持完整的文档对 象模型,这使 Javascript能够访问文档中的每-个HTML元素。另外,E5.5和 Netscape6还支持W3CDOM标准(或至少支持它的关键部分),该标准定义了 种标准的、可移植的访问HTML文档中所冇元素和文本的方法,还定义了通过操作 级联样式表(CSS)的样式性质来定仿元素以及修改它们外观的方法。在这些浏览 器中,客户端 Javascriφt对文档内容具有绝对的控制权,这种控制可以进行无穷的 脚本化