JavaScript概述

Back to Computer Technology > Tutorials


1 、 JavaScript 的 由 来

  由名称可以看出,JavaScript是一种描述语言(而且是面向对象的)。它专门用来开发Internet客户端和服务器端的应用程序。在客户端,通过浏览器解释嵌入在HTML页面中的JavaScript描述语句;在服务器端,用LiveWire(JavaScript在服务器应用方面的一部分)可以创建类似与CGI的服务器应用程序。在客户端的JavaScript语句处理用户输入时不用进行网络传输,所以,可以用JavaScript开发快速运行的HTML页。

  最初Netscape定义了JavaScript的原型,应用于Netscape Navigator上。此后Java语言的发明者SUN也支持并推广JavaScript。在Netscape Navigator的不断升级中,由于Navigator在市场上占有优势,JavaScript几乎成为工业标准。

2、本教材的一些约定

  本教材中的JavaScript脚本除了特殊说明外,都在Microsoft Internet Exployer 4.0和Netscape Communication 4.01上测试通过。

  本教材中的统一资源定位地址(Uniform Resource Locators)的形式为:

  http://server.domain/path/file.html

  本教材假定读者具有一定的制作主页的经验,因为本教材不专门讲解HTML。如果读者对C或Visual Basic比较熟悉,学习JavaScript会比较快;如果没有学过,也一样可以掌握它。

  鉴于大多数读者的情况,本教材中将用大量的篇幅讲述JavaScript,而在本教材的最后介绍一下LiveWire。

  除此之外,本教材推荐读者用UltraEdit编写HTML文件,因为UltraEdit将HTML和JavaScript的关键字都用不同的颜色醒目的表示出来,读者可以借此减少输入错误。

3、JavaScript的第一个例子

  大多数程序设计语言的第一个例子是HelloWorld程序。下面也给出一个用JavaScript写的HelloWorld脚本。也许你现在不能完全理解它,但本教材将在后面对语法等做详细说明。现在,你只要通过这个例子了解JavaScript的一些基本情况就可以了。

  用UltraEdit建立一个名为hello.html的新文件,输入以下内容:

<HTML>
<TITLE>您好</TILE>
<H1>您好,JavaScript!</H1>
<HR>
<BODY>
<P>下面的内容用JavaScript生成:</P>
<script language="JavaScript">
<!--
document.write("这是用JavaScript的document对象生成的Hello,World!");-->
</script>
</BODY>
</HTML>

  在Internet Explorer 4.0中打开hello.html文件,可以看到图1.1所示的窗口:

图1.1

  从hello.html中可以看出,<Script>和</Script>之间的内容是JavaScript代码。为了代码不出现在不支持JavaScript的浏览器中,可以使用<!-和-->作为注释,在注释中书写JavaScript的代码。若要在JavaScript的代码中使用注释,可以象C++一样使用//。支持JavaScript的浏览器会自动解释JavaScript的代码的。

  在标记<script>中可以指定语言,如:<scriptlanguage="JavaScript">。在没有指定的情况下,IE和NetscapeNavigator默认为JavaScript(在IE中还可以用VBScript,必须指定language="VBScript")。

  还有一个标记是<noscript>,在不支持JavaScript时,浏览器显示<noscript>和</noscript>中的内容。通常是这样使用的:

  <noscript>您的浏览器不支持JavaScript,由于本页使用了JavaScript,请您使用NetscapeNavigator。您可以在:<ahref="http://www.netscape.com">网景公司</a>下载。</noscirpt>

  hello.html中使用了document对象,这个对象是JavaScript中最重要的对象之一。document对象的一个方法叫write,是用于在浏览器中输出字符串的。整个JavaScript系统是一个对象的集合,灵活使用JavaScript就是灵活使用这个对象系统。对象系统基本上是一个树形结构,在第二章《JavaScript对象》中本教材会对JavaScript的对象系统作详细讨论。

4、定义函数和调用函数

  函数是JavaScript的基本组成部分,由一系列描述语句组成,用以完成特定的任务。函数定义由以下四部分组成:

(1)一个function关键字;
(2)一个函数名;
(3)参数列表;
(4)函数描述语句。

  函数的调用是指在某处完成函数的功能,而函数定义则是指定函数在被调用时需要完成怎样的功能。

  通常在文档的HEAD部分定义函数,在BODY部分调用函数。下面,就用一个例子说明:

<html>
<head>
<script language="JavaScript">
<!-- Hide script from old browsers
function showhello(st){
alert(st)
}
//end script hiding from old browsers -->
</script>
</head>
<body>
<script>
 showhello("Hello, JavaScript!")
</script>
</body>
</html>

  在IE4.0中打开这个文档,会出现下面的对话框:

图1.2

  函数Showhello有一个参数st,函数的作用是显示一个对话框,用了JavaScript的alert方法。在BODY部分通过调用Showhello函数显示对话框。

5、write方法

  在JavaScript中document对象的write方法是很常用的,本章的第一个例子中就用到了。其实,write方法不但可以输出字符串,还可以输出任何HTML的元素。见下面的例子:

<html>
<title> Test write </title>
<script language="JavaScript">
<!-- Hiding
document.write("<head><h1>This page is all created by JavaScript write method</h1></head><hr>");
document.write("<body><center>How do <u>you</u> feel about it? </center></body>");
//end script here -->
</script>
</html>

  在IE4.0中读者可以看到用write方法生成的各种元素。这里要说明的是,用write方法无法设置title的属性。

  除了write方法之外,document还有一个writeln方法。两者的区别在于writeln方法在输出了字符串后还输出一个回车。由于HTML是对回车不敏感的,所以在大多数情况下write和writeln是一样的。

  6、事件处理程序

  JavaScript在HTML中的重要用途之一是编写事件处理程序。在一个主页中,有编辑框、复选框和按钮等元素,这些元素都有一些由用户操作产生的事件,如按钮被按下会激发OnClick事件。这些事件发生时,可以激发相应的用JavaScript编写的事件处理程序。下表是对事件的总结:

  表1.1  
事件 应用范围 发生的动作 事件处理名
abort 图像 用户中止图像的装入 onAbort
blur 窗口、帧和所有表单成分 用户除去了输入焦点 onBlur
click 按钮、单选框、复选框、提交钮、重置钮和链接 用户点击了表单元素或链接 onClick
change 文本框、文本区、可选列表 用户改变了成分值  onChange
error 图像、窗口 装入文档或图像时发生错误 onError
focus 窗口、帧和所有表单成分 用户设置了输入焦点 onFocus
load 文档体 用户在浏览器中装入了文档 onLoad
mouseout 区域、链接 鼠标指针移出了区域或链接 onMouseout
mouseover 链接 鼠标指针移过链接 onMouseover
reset 表单 用户重置表单

1、对象的分级体系

  每个HTML文档被装入浏览器中时浏览器就创建了一系列分级的对象体系,此体系反映了HTML文档的属性。分级体系如图2.1:

  

  在每一个HTML页中含有下面的对象:

  navigator:含有正在使用的Navigator的名称、版本属性,客户端支持的MIME类型属性,客户端安装的"插件"类型。

window:最高等级的对象,拥有整个窗口的属性;在每一个Frame中的"子窗口"也有相应的window对象。

document:包含基于文档内容的属性,如title、 background color、 links和form等。

location:含有基于当前的URL的属性。

history:包含客户机先前已经请求过的URL。

在引用属性时,必须指定属性的所有祖先。例如,引用表单MyForm中的Text1的Value,必须写成:

document.MyForm.Text1.Value

2、关键的浏览器对象

在HTML页中,最有用的JavaScript对象有:window、Frame、document、Form、location、history和navigator对象。在这里分别讲一讲这些对象。

window和Frame对象

window对象是HTML文档的所有其他对象的祖先对象,是浏览器的窗口和窗口属性的集合。当在一个WEB页中用FRAME和FRAMESET定义了多个桢后,每个桢对应一个Frame对象。Frame对象和window对象的属性和方法是一样的,仅仅是在浏览器中对应的区域不同。

window对象的方法有:

open和close:开、关一个浏览器窗口;可以定义大小、内容、按钮条、定位区域和其他一些属性。

alert:显示带警告信息的对话框。

confirm:显示带OK和Cancel按钮的确认对话框。

prompt:显示带一个输入文本框的提示对话框。

blur和focus:在一个窗口中设置和移去输入焦点。

scroll:使窗口卷动到指定的坐标。

setTimeout:在指定的时间后对一表达式求值。

此外,window中的location和status属性能完成一些有用的任务:

  通过对location属性赋值使浏览器转到指定的URL,如同用户键入URL地址一样,如:location="http://www.chinabyte.com"将使浏览器转到Chinabyte的主页。

  通过对status属性赋值可以在浏览器底部的状态条中显示指定的信息。

document对象

  对document对象的write和writeln方法相信读者通过以前的介绍已经非常熟悉了。此外,document对象反映HTML文档的许多属性,其中包括:背景(bgColor)、文本(fgColor)、链接颜色(linkColor、alinkColor和vlinkColor)等;还有lastModified(文档的最近修改日期)、referrer(先前访问的URL)、URL(当前文档的URL)等。

cookie属性使用户可以读出和设置cookie的值。在此后的文章中我会单独讲解cookie的知识。

  document对象是所有Anchor、Applet、Area、Form、Image、Link、Plugin等对象的“祖先”对象。

Form对象

  当在HTML文档中使用<form>和</form>定义了表单时,Form对象就建立了。由于在一个主页中可以有多个表单,所以各个表单对象用数组或

中的表单名来区分。如:

  document.forms[1]HTML文档中的第二个表单(第一个表单是forms[0]);

  document.forms[0].elements[1]HTML文档中第一个表单的第二个成分(这个成分可以是Button或InputText等)。

location对象

  location对象的属性是基于当前URL的值的。如:hostname是服务器及汇总文档的域名。

  location对象有两个方法:

  reload:强制重新载入当前文档。

  replace:强制载入指定的URL文档,并覆盖当前的历史记录。

history对象

history对象保留用户浏览WEB的历史记录在一个字符串数组中。利用history对象的current、 next和previous属性可以访问当前的、下一个和前一个历史项;同样,也可以用history数组访问其他的历史项。

  history对象的go方法用来使浏览器转到指定的历史记录。例如:

  history.go(-2)载入前两项的URL;

  history.go(0)重新载入当前页。

navigator对象

  navigator对象包含当前浏览器的信息,如:appName属性指定了浏览器的名称;appVersion属性指定了浏览器的版本信息。

  navigator对象有两个方法:

  javaEnabled:指定是否支持Java。

  taintEnabled:指定是否使用数据加扰。关于数据加扰我会在后面的文章中讲解。

  下面将Navigator预定义的对象数组列出以供大家参考:
 数组 描述
Anchors 反映文档中按顺序排列的包含NAME属性的<A>标记
Applets 反映在档中按属性排列的所以<APPLET>标记
Arguments 反映一个函数的所有参数
Elements 反映按属性排列的表单成分
Embeds  反映按顺序排列的文档中的<EMBED>标记
Forms 反映按顺序排列的文档中的<FORM>标记
Frames 反映按顺序排列的文档中的<FRAME>标记
History 反映窗口的历史项
Images  反映按顺序排列的文档中的<IMG>标记
Links 反映按顺序排列的用link方法创建的文档中<AREAHREF="...">、<AHREF="...">标记和Link对象
MimeTypes 反映客户端支持的所有MIME类型
Options 反映按顺序排列的在Select对象中的<OPTION>标记
Plugins 反映按顺序排列的所有安装在客户端的插件