1.1 JavaScript 是什么
JavaScript 是一种可以用来给网页增加交互性的编程语言。
常常会看到 JavaScript 被称为“脚本语言”(scripting language),这暗示着它更适合编写脚本而不
是程序。这实际上并没有根本性的差异。JavaScript 脚本也是一种程序,它们包含在 HTML 页面内部
(原先编写脚本的方式),或者驻留在外部文件中(现在的首选方法)。在 HTML 页面上,因为脚本文
本包围在<script>标签中,所以它不会显示在用户的屏幕上,而 Web 浏览器知道应该运行 JavaScript
程序。<script>标签常常放在 HTML 页面的<head>部分中,如脚本 1-1 所示。但是如果愿意,也可以
将脚本放在<body>部分中。
这个非常简单的脚本在浏览器窗口中输出“Hello, Cleveland!”
<!DOCTYPE html> <html> <head> <title>Barely a script at all</title> <script type="text/javascript"> window.onload = function() { document.getElementById ("myMessage").innerHTML = "Hello, Cleveland!"; } </script> </head> <body> <h1 id="myMessage"> </h1> </body> </html>
1.2 JavaScript 的起源
既然 JavaScript 与 Java 无关,那么为什么它们的名称如此相似呢?这是计算机行业最烦人的恶习
之一:为了获得市场营销方面的成功,而不顾及产品实质。
当 Netscape 在其 Navigator Web 浏览器中添加了一些基本脚本功能时,它最初将这种脚本语言称
为 LiveScript。与此同时,Java 开始大行其道,它被认为是计算行业中下一项伟大的革新。当 Netscape
在 Navigator 2 中支持运行 Java applet 时,它也将 LiveScript 改名为 JavaScript,希望以此借用 Java 的
声势。尽管 JavaScript 和 Java 是非常不同的编程语言,但这一事实并没有阻止 Netscape 采用这种市场
营销手段。从那时候开始,我们这些技术作家只好不厌其烦地解释 JavaScript 和 Java 是不同的东西。
当然,我们靠这挣了不少钱,从这个角度来说,我们可能应该感谢这些市场营销专家。
当微软公司看到 JavaScript 在 Web 开发人员中流行起来时,它意识到必须在 IE 中添加一些脚本
功能。它原本可以采用 JavaScript,但是与通常情况一样,微软公司又自行其事,建立了自己的脚本
语言,这种语言非常像 JavaScript,但又不完全相同。JavaScript 的微软版本称为 JScript。
1.3 JavaScript 可以做什么
用 JavaScript 可以做许多事情,使网页更具交互性,给站点的用户提供更好、更令人兴奋的体验。
JavaScript 使你可以创建活跃的用户界面,当用户在页面间导航时向他们提供反馈。例如,你可能在
一些站点上见过,当鼠标指针停留在按钮上时,会突出显示按钮。这是用 JavaScript 实现的,使用了
一种称为翻转器(rollover)的技术。
可以使用 JavaScript 来确保用户以表单形式输入有效的信息,这可以节省你的业务时间和开支。
如果表单需要进行计算,那么可以在用户机器上用 JavaScript 来完成,而不需要任何服务器端处理。
你应该知道一种区分程序的方式:在用户机器上运行的程序称为客户端(client-side)程序,在服务器
上运行的程序称为服务器端(server-side)程序。
使用 JavaScript,根据用户的操作可以创建自定义的 Web 页面。假设你正在运行一个旅行指南站
点,用户单击夏威夷作为旅游目的地。你可以在一个新窗口中显示最新的夏威夷旅游指南。JavaScript
可以控制浏览器,所以你可以打开新窗口、显示警告框以及在浏览器窗口的状态栏中显示自定义的消
息。因为 JavaScript 有一套日期和时间特性,可以生成时钟、日历和时间戳文档。
JavaScript 还可以处理表单,设置 cookie,即时构建 HTML 页面以及创建基于 Web 的应用程序。
1.4 JavaScript 不能做什么
JavaScript 是一种客户端语言。也就是说,设计它的目的是在用户的机器上而不是服务器上执行
任务。因此,JavaScript 有一些固有的限制,这些限制主要出于如下安全原因。
JavaScript 不允许写服务器机器上的文件。尽管写服务器上的文件在许多方面是很方便的(比
如存储页面单击数或用户填写的表单数据),但是 JavaScript 不允许这么做。而是需要用服务器
上的一个程序处理和存储这些数据,这个程序可以是用 Java、Perl 或 PHP 等语言编写的。
JavaScript 不能关闭不是由它自己打开的窗口。这是为了避免一个站点关闭其他任何站点的窗
口,从而独占浏览器。
JavaScript 不能从来自另一个服务器的已经打开的网页中读取信息。换句话说,网页不能读取
已经打开的其他窗口中的信息,因此无法探察访问这个站点的冲浪者还在访问其他哪些站点。