《网页设计与制作第8章.ppt》由会员分享,可在线阅读,更多相关《网页设计与制作第8章.ppt(140页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第7 7章章 网页制作脚本语言网页制作脚本语言前言 在涉及脚本的网页制作中,VBScript与JavaScript是使用最广泛的两种脚本语言,本章将讲述VBScript的语言基础,程序控制流程,函数与对象的使用,以及VBScript编程的高级方法。7.1 VBScript与JavaScript7.1.1 VBScript与JavaScript VBScript和JavaScript是目前比较流行的脚本语言,都可以用来建立交互式的WEB应用程序,脚本语言是一种介于HTML语言和C+、Visual Basic等程序设计语言之间的语言,它在形式和功能上可能更接近后者,但它必竟不是一个应用程序开发语
2、言。所以它的语法规则没有一般的编程语言那样严格和复杂,也无须编译,无论是VBScript还是JavaScript,它们都是跨平台基于对象的脚本语言,可以直接嵌入到HTML文档中,浏览器能够理解其中的语句,并能在网页下载后对这些语句进行解析执行,下因为如此,读者也可以在浏览器中通过查看源代码直接阅读页面中的VBScript或JavaScript代码。7.1.2 对象的事件、属性和方法 如今,面向对象的概念已深入人心,我们经常使用的程序设计语言,如Visual Basic、C+、JAVA等都是面向对象的编程语言,虽然说,VBScript和JavaScript还不算是面向对象的编程语言,但它们都是基
3、于对象的语言,因此我们有必要了解一下对象的属性、事件、和方法的概念。对象 对象就是具有一定特性,能进行相关操作的实体,有的对象还可以对外部环境的变化做出响应对象的属性、事件、和方法的概念对象的属性就是描述对象特征的数据对象的方法就是对象能够进行的操作对象的事件则是能够被对象识别的固定动作7.1.3 客户端和服务器端的脚本语言 在网页的制作中,我们可以用客户端的脚本语言(通常是VBScript语言和JavaScript语言)来控制页面,对页面中某些事件做出响应,例如,在用户提交数据时进行有效性验证以及数据查找等。通过使用客户端的脚本语言,可以创建动态网页,减轻服务器的负担。但是,如果所有的数据存
4、取都需要通过客户端脚本来处理的话,那么在客户机与服务器之间传送的数据量将是非常大的,它会使服务器的速度慢得惊人,令用户无法忍受。因此,大量的数据处理(例如对大型数据库的存取)应该在服务器端完成。而且由于客户的脚本是公开的,任何人都可以查看和分析它的源代码,所以对于有保密要求的数据,必须在服务器端处理。7.1.4 脚本引擎 脚本引擎(Scripting Enging)是处理特定脚本命令的程序。在使用脚本语言之前,我们需要在WEB服务器上安装脚本引擎,只要WEB服务器端支持合适的脚本引擎,我们可以使用任何脚本语言。Vbscript所用的脚本引擎是vbscript.dll,而JavaScript的脚
5、本引擎是jscript.dll。7.2 使用VBScript 脚本语言 VBScript 作为一种脚本语言,可以自由地嵌入任何支持该语言的应用程序中,以增强应用程序的功能,其应用领域十分广泛,本节通过一个实例,说明在HTML网页中使用VBScript 的基本方法。7.2.1 VBScript 及其主要功能 VBScript 是 Visual Basic 程序设计语言家族中的新成员,它以 Visual Basic 语言为基础提供了编程的功能,在脚本开发的场合中,VBScript 得到了广泛的应用,其中包括在 Internet Explorer浏览器上编写客户端脚本,也包括在 Internet I
6、nformation Sever 上编写服务器端脚本。7.2.2 在HTLM 页面中使用 VBScriptVBScript不能用来编写单独的应用程序,它必须嵌入到HTLM页面中去。脚本代码能够嵌入到 HTLM 文档的任何地方,但一般都是将所有的脚本代码集中放在HEAD部分中,这样可以确保在BODY部分调用代码之前所有脚本代码都被读取并解码。脚本代码以开始,以结束。标记的一般格式是:其中,LANGUAGE 属性定义脚本代码所用的脚本语言,EVENT 属性定义与该脚本部分相关联的事件,FOR 属性定义与事件相关联的对象。脚本部分的注释标记 不是必须的,但一般应加上,因为有了注释后,脚本代码就可以不
7、被那些不支持脚本的浏览器处理。例7-1-1:4当用浏览器打开并读取该文档时,将显示一个文本框和一个按钮。在文本框中输入正确的数据后(如:图7-1),单击“提交”按钮,浏览器会查找并执行事件过程 Button1_OnClick。执行时将调用表单对象的 Submit 方法将数据递交到服务器。若输入的数据不正确,如不是数字或小于1或大于50,则会弹出消息框提示输入正确的数字。7.3 VBScript 基础4VBScript是VB的一个子集,编程方法和VB基本相同,但VB中的许多特性(如类和API调用等)在VBScript中都被删去了。在这一节我们先来初步认识VBScript的基本情况,并学习VBSc
8、ript语言的基础知识,包括该语言的数据类型、常量和变量的一些规定、表达式与运算符等。7.3.1 VBScript数据类型4虽然Visual Basic中有许多种数据类型,但是在VBScript中,只支持一种数据类型,即Variant(变体型)Variant(变体型)4Varint是一种很特殊的数据类型,根据它使用方式的不同,可以代表各种数据类型。如果我们将一个变量赋值为数字,那么在引用这个变量的时候,它将作为数字使用;如果我们将一个变量赋值为字符串,那么我们可以对这个变量进行字符串的种操作。4在实际使用的过程中,VBScript可以根据在变量中存储的数据识别其类型。4在VBScript识别的
9、过程中,除了数字和字符串之外,还包括了布尔类型、时间类型、货币类型等等,我们将其称为子类型(Subtypes)。4在表7-1中,列举了VBScript中的数据子类型。4其中,无效类型对许多人来说,也许是比较难以理解的一种类型,它不像前面几种类型那样直观,无效类型的数据就是Null。类 型 说 明4Empty 空类型,代表未初始化的Variant变量值,如果变量是数字,那么它为0,如果变量是字符串,那么它为长度为0的字符串4Null 无效类型,说明在变量中保存的是无效的数据4Boolean 布尔类型,取值为True或者False4Byte 字节类型,取值范围是从0到255的整数4Integer
10、整数类型,取值范围是从-32768到32767的整数4Currency 货币类型,取值范围从-922,337,203,685,477.5808到922,337,203,685,447.58074Long 长整数类型,取值范围是从-2,147,483,648到2,147,483,647的整数4Single 单精度浮点类型,负数取值范围从-3.402823E38到-1.401298E-45,正数取值范围从1.401298E-45到3.402823E384Double 双精度浮点类型,负数取值范围从-1.77797693123686232E308到-4.94065645841247E-324,正娄取
11、值范围从4.94065645841247E-324到1.7779769312386232E3084Date(Time)日期类型,可以代表从100年1月1日到9999年12月31日的日期4String 字符串类型,字符串的长度是可变的,最长可达20亿个字符4Object 对象类型4Error 错误编号类型7.3.2 VBScript变量4使用脚本语言时,变量是其中最基本的元素,脚本执行过程中,往往需要用一个单元将信息存储起来,变量就是这样的一个命名的存储单元,存储在这个单元中的数据就是变量的值,使用变量时,一般要先声明变量,而命名变量时也要按照VBScript的命名要求才能正确命名变量。1.声明
12、变量4VBScript和Visual Basic一样,在使用变量前可以不对变量声明4如下例中,我们用到了一个变量Msg,但并未预先对它进行声明,这并不影响脚本的执行。例7-3-1:在脚本中未声明而使用一个变量4在这个页面中,执行的结果是在页面上显示字符串HELLO。在VBScript中,不声明而直接使用变量,称为对变量的隐式声明。(1)Option Explicit4Option Explicit语句强制要求显式声明脚本中使用的所有变量,在使用这条语句后,必须使用Dim、Private、Public或者ReDim语句声明所使用的变量。4注意:Option Explicit语句在页面中的位置很特
13、殊,它必须放置子所有HTML文本和脚本命令之前。(2)Dim4在声明变量的时候,我们一般使用Dim语句,其语法格式为:4Dim 变量名(下标)4其中,“下标”在声明数组时,代表数组的上界。4例如:Dim Item 声明变量Item(3)Public4使用DIM语句可以在脚本的过程中声明的变量,也可以在过程外声明变量。在过程中声明的变量称为过程变量,在过程外声明的变量称为脚本级变量。过程级变量只能应用于过程中,脚本级变量可以应用于脚本中所有的过程。4Public 语句只能声明脚本级变量,运用Public声明的变量可以运用于所有项目的全部脚本中,其语法格式如下:4Public 变量名(下标)(4)
14、Private4Private语句和Public语句是相对的,Private语句也只能声明脚本级变量,但运用Private语句声明的变量只能在声明该变量的脚本中使用。其语法格式如下:4Private 变量名(下标)2 给变量赋值4我们可以用如下语句给变量赋值4MyVar=2007.3.3 VBScript常量4常量和变量一样可以赋予数值,但是常量和变量有所不同,变量可以反复赋值,而常量的数值一旦确定下来之后就不能发生变化了。此外,VBScript还定义了许多系统常量,这无疑大大方便了程序员的开发工作。1 声明自定义常量4常量声明的语法格式如下:4Coust 常量名=4其中,即是常量的值。4例如
15、:Coust PI=3.14 声明常量PI4在声明常量时,我们也可以加上Public 和Private前缀来设置常量的作用域,设置方式与变量相同。4缺省情况下,在过程中声明的常量具有过程级作用域,在过程外声明的常量具有脚步本级作用域。4在常量命名时,也遵循变量的命名规则,但为了将常量与变量区分开来,通常将常量名全部大写。2 使用固有常量4在VBScript中定义了固有常量,设计人员可以在程序中直接引用这些常量。VBScript中的固有常量包括:颜色常量、比较常量、日期和时间常量,日期格式常量,DriveType常量,文件输入/输出常量等。7.3.4 VBScript表达式与运算符4运算是指对数
16、据进行加工处理。基本的运算关系可以用一些简洁的符号来描述,这些符号称为运算符,被运算的数据则称为操作数,操作数可以是变量、常量,也可以是函数。将运算符和操作数连接起来,就构成了表达式。在VBScript中可以进行四种类型的运算,即算术运算、连接运算、关系运算和逻辑运算。1 算术运算4算术运算就是人们熟悉的数学运算,如:加(+)、减(-)、乘(*)、除(/)、整除(,如 52 等于2)、取余(Mod,如 7 Mod 2 等于1)、指数()和一元减(数值取反,如-(-5)等于5)。2.连接运算4连接运算是将两个字符表达式连接起来,生成一个新字符串。连接运算符有两个,即+和&。3关系运算符4关系运算
17、是将两个操作数进行比较,判断其关系,然后返回一个逻辑值,表明比较操作的结果是真还是假,常用的关系运算符有:等于(=)、不等于()、大于()、小于(=)和 对象关系(Is)用来比较对象类型。4在关系运算中,如果两个操作数都是数值,那么将进行数值比较。如果两个操作数都是字符串,那么将进行字符串的比较。如果一个操作数是数值,另外一个操作数是字符串,VBScript则假定任何数值都比字符串要小。4注意:如果关系运算中的任何操作数为Null,那么表达式返回的结果既不为True,也不为 False,而是Null。4逻辑运算4逻辑运算通常也称为布尔运算,专门用于逻辑值之间的运算。常见的逻辑运算符及运算规则见
18、表7-3:5运算符的优先级4在VBScript中,一个表达式中可以存在多个运算符,当表达式具有多个运算符的时候,VBScript将按照预定的顺序计算表达式的各个部分,这个预定顺序被称为运算符优先级。如果在表达式中有括号,那么首先将对括号内的表达式进行运算,在括号内表达式的运算过程中,仍然遵循运算符的优先级关系。4VBScript的四种运算中,连接运算和关系运算没有运算的优先级,数学运算的优先级符合数学运算的规则,逻辑运算的优先级顺序按表7-3所示,从上到下逐渐降低。4在优先级顺序中,算术运算符的优先级最高,然后是连接运算符,再往后是关系运算符,逻辑运算符的优先级最低。表7-3:逻辑运算符及运算
19、规则4运算符 说明 优先级 说 明 例 结果4Not 取反 1 当操作数为假是,结果为真 Not F T4And 与 2 操作数均为真时,结果为真 T And F、T And T F T4Or 或 3 操作数中有一个为真时,结果为真 T or FF or F TF4Xor 异或 3 操作数相反时,结果为真 T Xor F、T Xor T T F4Eqv 等价 4 操作数相同时,结果才为真 T Imp F、F Eqv F F T4Imp 蕴含 5 第一个操作数为真,第二个操作数为假时,结果才为假,其余结果均为真 T Imp FT Imp FF Imp T FTT7.4 VBScript 语句4在
20、前面几节中介绍了有关VBScript语句的数据类型、常量、变量,但是仅了解这些还远远不够,也无法完成符合用户需求的页面,因此,在这一节中我们将进一步学习VBScript 的基本语句,如选择语句和循环语句等,以及在VBScript中使用过程的具体方法。7.4.1 VBScript的基本语句4对于一般程序,有三种基本结构可以控制程序的流程:顺序结构、分支结构和循环结构。4顺序结构的流程是按照事务完成的先后次序依次招待语句,而且总是在完成一条语句之后再执行后一条语句,并且执行过的语句不再执行,这与分支结构和循环结构有所区别。4分支结构相当于在实际生活中,我们对于判断结果进行选择一样,如果出现某些情况
21、,我们将会如何做,如果不出现这些情况,我们将作如何打算。4循环结构是对某些语句进行反复执行。一般来说,任何程序总是同时包含这三种结构。其中,顺序结构最简单,分支结构可以使用选择语句来实现;循环结构可以使用循环语句来实现。下面我们将具体介绍选择语句和循环语句。1选择语句4在VBScript中,实现选择结构有两种语句:IfThenElse语句和SelectCase语句,这两种语句在执行的时候,先对条件进行判断,然后根据条件执行相应的脚本。IfThenElse语句是双分支选择结构语句,SelectCase语句是多分支选择结构语句。(1)IfThenElse语句4VBScript中最常用的条件语句就是
22、IfThenElse语句,一般IfThenElse语句用来检查一个布尔条件,然后根据结果执行相应的脚本,如果为True,则执行Then后面的脚本,如果为False,则执行Else后面的脚本。IfThenElse语句有两种形式:4形式1:4If Then44Else44End If4形式2:4If Then Else例7-4-1:IfThenElse语句应用举例。4这是一个投票权测试程序,运行结果如图7-2(a)所示,假设在文本框中输入的数字是15,就会出现图7-2(b)所示的提示对话框。(2)Select Case 语句4如果需要实现多分支选择,一般我们Select Case 语句,而不IfT
23、henElse语句,尽管后者也完全能够实现这些功能。Select Case 语句的功能就是根据表达式的值执行几组脚本当中的一组。其语句形式如下:4Select Case 4Case 44Case 4444Case Else44End Select4其中,“表达式值列表”的含义是一个或n个可取值的列表。4多分支语句一定以Select Case开头,以End Select结尾。在开始处得到取值后,就把它与结构中每一个Case后的表达式值列表中所列的值进行比较。如果相等,就执行与该Case相关的。只有在全部都不匹配时,才去做与Case Else 相关联的。例 7-4-2:Select Case语句应
24、用举例。4程序的执行结果如图7-3(a)所示,假设在文本框中输入数字2,单击“确定”按钮,则将会出现图7-3(b)的提示:2循环语句4使用循环语句可以反复执行某段脚本,直到满足循环条件后才停止。在VBScript中,提供了四种循环语句:ForNext语句、DoLoop语句、WhileEnd语句和For EachNext语句。运用循环语句,可以极大地方便我们开发脚本的工作。(1)ForNext语句4如果已知某一程序段需要反复执行的次数,那么使用ForNext循环语句是最为恰当的。该语句的一般格式是:4For=To Step44Exit For4Next 4其中,是一个整型变量,、都是具体的数值,
25、是需要反复执行的程序段,常被称为循环体。在这种结构的循环里,For和Next必须配对使用。方括号里的内容可以省略。ForNext语句的执行过程是:41将赋给;42检查循环变量的取值是否大于,如果大于,则结束此循环,去执行Next后面的语句;43如果循环变量的取值不大于,执行循环体内的语句,直至Next;44将循环变量取值自动增加一个,回到步骤2重复进行。例7-4-3:下面程序能够计算从1 到任意正整数N的总和。4运行此程序,执行结果如图7-4所示,如果在文本框中输入90,则程序会计算出1到90的总和。4图7-4(a)图7-4(b)4使用VB的编程人员注意,在VB中Next语句之后要跟有循环变量
26、,而在VBScript的语句中,该变量不必再写了。(2)WhileWend语句4在ForNext语句中,一开始就会指定初始值与终值,如果没有使用Exit For语句的话,循环体中的语句就会被执行固定的次数,但在某些情况下,就无法用ForNext循环来表示。4当希望重复做某件事,直到某个条件成立为止,而不是执行一个固定的次数时,可以使用WhileWend语句该语句的格式是:4While 44Wend该语句执行的步骤如下:41判断是否为真,如果为真,则进入步骤2执行循环体,如果为假或为Null,则跳出循环;42.执行循环体,然后返回步骤1。4注意:WhileWend语句没有可以跳离循环的语句,不能
27、想当然地使用Exit While。4(3)DoLoop语句4DoLoop语句也是根据条件成立与否来决定循环是否继续进行的。但它与WhileWend语句的区别在于:DoLoop语句中有可以跳离循环的语句Exit Do。DoLoop语句有四种不同的形式4形式一:形式二:4Do While Do4 4Exit Do Exit Do4Loop Loop4形式三:形式四:4Do Untill Do4 4Exit Do Exit Do4Loop Loop Untill例7-4-4:DoLoop的应用。4执行结果如图7-5所示,假设输入的汉堡价格是8元,手中的钱是60元,那么单击“确定”按钮,窗口内显示如图
28、7-5(b)所示:7.4.2 VBScript语句中的过程4掌握了基本语句和基本概念之后,程序设计就变成了一个不断重复的过程。用户需要多次重复某些步骤、或是某些语句来完成某一特定任务。出于程序的可读性、可调试性的考虑,在实际的编程过程中,我们将这些用于实现某一特定功能,而且相对集中的语句放在一个子程序中,称为过程。4在过程中的语句一般和其它过程中的语句或主程序(相对于子程序而言)中的语句没有什么直接联系。4在VBScript中,过程被分为两类:Sub过程的Function过程。1 Sub过程4Sub过程,也称为子过程。它是由一些功能实现相对集中的VBScript语句组成的。这些语句以Sub语句
29、开头,以End Sub语句结束。这些语句被执行操作时并不返回任何数值,这一点与Function过程不同。Sub过程可以使用参数(由调用过程的主程序将所需的常量、变量或表达式传递给过程)。如果Sub过程无任何参数,则Sub后面也应加空括号()。4例7-4-5:要求放置一个按钮,按下这个按钮之后将会弹出一个对话框。2Function过程4Function过程又称函数过程,它与Sub过程类似,也是由一系列VBScript语句组成,它以Function语句开头,以End Function语句结束。Function过程在调用结束后,通过函数名返回一个值,这个值是在过程的语句中赋给函数名的,它的数据类型总
30、是Variant。Function过程中也可以使用参数。7.5 VBScript的函数4函数,简单地说,可以看成是一个子程序,输入一个值给函数,函数就会返回一个值。在VBScript中有相当多的函数可以用。使用这些函数的时候,不必知道,也看不到这些函数到底是如何处理所输入的参数的,编写程序的人,只要知道如何使用这些函数就可以了。4VBScript的函数种类很多,包括与数字运算有关的函数、与字符串处理有关的函数、数据类型转换函数及日期与时间函数等。7.5.1 数学运算函数4在VBScript中提供了一定的数学运算函数,可以完成简单的数学运算功能表7-4:数学运算函数及其功能4函数 功能 函数 功
31、能4Abs()返回一个数的绝对值 Log()返回以 e 为底的对数4Atn()返回反正切 Sqn()返回一个数的符号4Cos()返回余弦 Sin()返回正弦4Exp()返回 e 的方幂 Sqr()返回一个数的平方根4Fix()返回一个数的整数部分 Tan()返回正切4Int()返回不超过一个数的最大整数 Round()对数值表达式进行四舍五入7.5.2 字符串处理函数4字符串函数在制作网页时特别常用,要收集使用者在网页中输入的信息,或是检查使用者输入的格式,都会用到字符串的相关函数。表7-5:字符串函数及其功能4函数 功能 函数 功能4Len()求字符串的长度 Left()从左边截取字符串4L
32、case()将字符串中的所有字母变成小写 Right()从右边截取字符串4Ucase()将字符串中的所有字母变成大写 Mid()从指定位置处截取字符串4Ltrim()去除字符串左边的空格 Space()产生指定数目的空格4CCur()将表达式转换为货币子类型的数据 CStr()将表达式转换为字符串子类型的数据4CDate()将表达式转换为日期子类型的数据 Hex()将数值转换为表示十六进制值的字符串4CDbl()将表达式转换为双精度子类型的数据 Oct()将数值转换为表示八进制值的字符串7.5.3 数据类型转换函数4运用VBScript的数据类型转换函数,我们可以方便地将数据进行子类型的转换。
33、表7-6:数据类型转换函数及功能4函数 功能 函数 功能4CBool()将表达式转换为布尔子类型的数据 CInt()将表达式转换为整数类型的数据4CByte()将表达式转换为字节子类型的数据 CSng()将表达式转换为单精度子类型的数据4CCur()将表达式转换为货币子类型的数据 CStr()将表达式转换为字符串子类型的数据4CDate()将表达式转换为日期子类型的数据 Hex()将数值转换为表示十六进制值的字符串4CDbl()将表达式转换为双精度子类型的数据 Oct()将数值转换为表示八进制值的字符串7.5.4 日期时间函数4VBScript的日期时间函数能够获取当前系统的日期和时间,也能够
34、对日期和时间中的各个部分单独取出进行处理。表7-7:日期时间函数及功能4函数 功能 函数 功能4Year()从日期中提取年份 Minute()从时间中提取分钟4Month()从日期中提取月份 Second()从时间中提取秒数4Day()从日期中提取日数 DateValue()将字符串形式日期转换成数值4WeekDay()从日期中提取一周中的天数 TimeValue()将字符串形式时间转换成数值4Hour()从时间中提取小时 DateSerial()将整数形式日期转换成数值4TimeSerial()将整数形式时间转换成数值 Date 返回当前系统日期4Time 返回当前系统时间 Now 返回当前
35、系统的日期及时间7.5.5 其它函数41InputBox4其语法格式如下:4InputBox(提示字符串,窗口说明,内容默认值,对话框水平坐标,对话框垂直坐标)42MsgBox函数4语法格式如下:4MsgBox(提示字符串,按钮,窗口说明)表7-8:按钮参数取值表4组 符号常数 值 意义4第1组 VbOkOnlyVbOkCancelVbAbortRetryIgnoreVbYesNoCancelVbYesNoVbRtryCancel 012345 只显示“确定”按钮显示“确定”及“取消”按钮显示“终止”、“重试”、“忽略”按钮显示“是”、“否”及“取消”按钮显示“是”及“否”按钮显示“重试”及“
36、取消”按钮4第2组 VbCriticalVbQuestionVbExclamationVbInformation 16324864 显示中止图标(坏信息)显示问号图标(有疑问)显示惊叹号图标(警告)显示i图标(信息)4第3组 VbDefaultButton1VbDefaultButton2VbDefaultButton3VbDefaultButton4 0256512768 第一个按钮为默认第二个按钮为默认第三个按钮为默认第四个按钮为默认4第4组 VbApplicationModalVbSystemModal 04096 应用程序强制返回;应用程序一直被挂起,直到用户对消息框作出响应才继续工作
37、系统强制返回;全部应用程序都被挂起,直到用户对消息框作出响应才继续工作4表中第一组值代表框中要显示的按钮类型及个数4第二组值代表出现在框里的图标样式;第三组值说明框中出现的按钮哪一个是默认的;第四组值决定框的强制返回性。“按钮”参数由每组里最多选出一个值,然后相加而成。4MsgBox函数的返回值将表明用户用鼠标单击信息框里的哪一个按钮,具体见表7-9:表7-9:MsgBox函数的返回值4符号常数 返回值 含义 符号常数 返回值 含义4VbOkVbCancelVbAbortVbRetry 1234 单击“确定”按钮单击“取消”按钮单击“终止”按钮单击“重试”按钮 VbIgnoreVbYesVbN
38、o 567 单击“忽略”按钮单击“是”按钮单击“否”按钮7.6 VBScript事件处理4VBScript提供了3种事件处理的方式。前面已经介绍了一种方式,即通过事件过程来控制事件,当在浏览器中触发事件时,就会调用事件过程中的代码来处理事件。下面对其它两种方式进行介绍。7.6.1 用内联代码直接处理事件4可以在定义控件的标记中用内联的脚本代码来直接处理事件。使用这种方式,不必单独为一个事件编写一个事件过程,而是将其当作标记中的一个属性。例如:4上面的代码没有标记,而是在标记中含有一个属性,该属性的名字就是按钮的单击事件名,属性值则放在一对单引号内。单击按钮时,就会执行单引号内的语句。事件的属性
39、值可以包含多个语句,各语句之间用冒号隔开。4LANGUAGE属性用来指定内联脚本语句所用的语言。若省略,则默认是JavaScript。若使用的是VBScript,则不能省略。此外,如果在HTML文档中用标记指定了脚本语言,则可以不必再指定,浏览器会自动把最近一次指定的脚本语言作为默认语言。4注意:也可以在脚本部分定义一个通用过程,然后通过属性来调用这个过程。例如:7.6.2 用FOR和EVENT属性来处理事件4在标记中有两个属性,即FOR和EVENT,EVENT属性用于定义与脚本部分相关联的事件,而FOR属性用于定义与事件相关联的对象。4例如7.7 脚本对象模型4脚本对象模型是一种层次结构(如
40、图7-7),其中的每个对象可以被脚本引擎访问。在脚本对象模型中,每个对象都有属性,属性本身也是对象,有自己的属性(其中有些属性也是对象)、方法和事件。7.7.1 Window对象4在脚本对象模型中,最顶层的对象是Window对象。Window对象表示浏览器的窗口,是其它对象的容器。Window对象的属性和方法可以在脚本中直接访问。表 7-10:Window对象的属性4属 性 说 明4Name 返回窗口的名称,它是一个只读属性,在窗口生成时指定。可以用标记和TARGET属性来指定窗口名称,也可以用Window对象的Open方法打开窗口时指定名称。4Parent 返回当前窗口的父窗口对象。通过Pa
41、rent属性,可以访问父窗口的属性。例如:Alert“当前窗口的父窗口名是:”&Parent.Name4Top 返回表示最顶层窗口的Window对象。4Document 返回当前窗口的Document对象。Document对象表示窗口中显示的文档。4Frames 窗口中可以包含框架,框架通过Frames属性访问,它是一个对象数组。当前窗口中的第一个框架是Frames(0),第二个框架是Frames(1),依次类推。4Location 返回当前窗口的Location对象。通过Location对象,可以访问文档的URL信息。当前窗口中文档的URL是由Location对象的Href属性给出的。4De
42、faultStatus 返回或设置在浏览器状态栏中显示的默认信息。当浏览器的状态栏不显示其它信息时,将显示这个信息。4Status 设置或返回在浏览器状态栏中显示的信息。4History 返回当前窗口的History对象的访问。4Window对象的方法如表7-11所示。表7-11:Window对象的方法4方 法 说 明4Alert 类似于MsgBox函数,用于显示一个警告消息框,但只有一个“确定”按钮。4Cofirm 用于显示一个消息框,该消息框包含“确定”和“取消”按钮。如果单击“确定”按钮,则返回True,否则返回False。4Prompt 类似于InputBox函数,用于提示用户输入数据
43、。4Open 打开一个已存在窗口,或者建立一个新窗口,并在其上显示一个文档。例如,以下语句打开一个名为“msw”的窗口,在其中显示Microsoft网站的主页并返回一个Window对象:NewWindow=Open”http:/”,”msw”4Close 关闭一个打开的窗口。例如:NewWindow.Close4SetTimeOut 设置一个计时器,用来在指定的时间后调用一个过程。时间以毫秒为单位。4ClearTimeOut 用来将指定的计时器复位。4Navigate 用来在当前窗口中显示新文档。例如,以下语句通知浏览器链接到Micriosoft网站的主页:Navigate“http:/”4W
44、indow对象提供了两个事件,即OnLoad和OnUnload事件。OnLoad事件在页面加载时触发,而OnUnload事件在页面卸载时触发。7.7.2 Document对象4Document对象当前窗口或某个框架中显示的HTML文档。通过Document对象的属性和方法,可以访问当前加载的HTML页面,控制页面的外观和内容。表7-12:Document对象的属性4LinkColor 返回或设置文档中超级链接的颜色。4aLinkColor 返回或设置文档中激活链接的颜色。激活链接是用鼠村光标移到一个超级链接上,按下鼠标键而尚未释放时的一种状态。4vLinkColor 返回或设置已经访问过的超级
45、链接的颜色。4bgColor 返回或设置文档的背景色。4fgColor 返回或设置文档的前景色。4Anchors Anchor是一个对象,表示当前文档中的锚。Anchor对象的Length属性返回当前文档中锚的数目,每个锚被存储在Anchors数组中,Anchors(0)是文档中的第一个锚,而Anchors(1)是第二个锚,依次类推。4Title 返回文档的标题,只读属性。4Cookie 返回或设置当前文档的Cookie。Cookie是由浏览器读取和写入磁盘的文本文件,这些文件不是可执行文件,不会对文件系统构成威胁,而且只能通过浏览器进行访问。使用Cookie,可以在页面之间传递信息。4Lin
46、ks Link是一个对象,表示文档中的超级链接。Link对象的Length属性返回当前文档中超级链接的数目,每个超级链接被存储在Links数组中,Links(0)是文档中的第一个超级链接,Links(1)是文档中的第二个超级链接,依次类推。4Forms Form是一个对象,表示文档中的表单。Form对象的Length属性返回当前文档中表单的数目,每个表单被存储在Forms数组中,Forms(0)是文档中的第一个表单,Forms(1)j是第二个表单,依次类推。4Location 返回文档的Location对象。4LastModified 返回当前文档的最后修改日期。4Referrer 返回引用文
47、档的URL地址。表7-13:Document对象的方法4Open 用于为输出打开文档。执行Open方法后,文档中的当前内容将被清除,可以用Write或WriteLn将新的文本写到文档中。4Write 向当前文档中写入字符串。4WriteLn 将一个字符串写到当前文档,并在末尾加一个换行符。如果浏览器忽略换行符,则WriteLn和Write方法是一样的。4Close 关闭文档,显示所有用Write或WriteLn方法写入的信息。4Clear 清除当前文档中的内容。7.7.3 Form对象4Form对象表示文档中的一个表单,表单用于获取输入数据并向服务器传送。Form对象包含表7-14所示的属性。
48、表7-14:Form对象的属性4Action 指定用于表单操作的后端过程的URL地址。这个属性等价于FORM标记的ACTION属性。4Method 指定客户机和服务器之间数据交换的方法,取值为GET和POST。这个属性等价于FORM标记的METHOD属性。4Target 指定目标窗口。这个属性等价于FORM标记的TARGET属性。4HostName 返回或设置URL的宿主,可以是一个名字或一个IP地址。4Port 返回或设置URL的端口。4PathName 返回或设置URL的路径。4Search 返回或设置URL的搜索部分。4Hash 返回或设置URL的无用部分。7.7.4 Location对
49、象4通过Location对象可以访问文档的URL信息。表7-15:Location对象的属性4ref 返回或设置装入浏览器窗口的完整的URL。利用这个属性,可以通过脚本代码链接到其它位置。4Protocol 返回或设置URL的协议。4Host 返回或设置URL的宿主和端口,宿主和端口之间用冒号隔开。4HostName 返回或设置URL的宿主,可以是一个名字或一个IP地址。4Port 返回或设置URL的端口。4PathName 返回或设置URL的路径。4Search 返回或设置URL的搜索部分。4Hash 返回或设置URL的无用部分。7.7.5 Link对象4link对象表示文档中的超级链接。L
50、ink对象的属性与Location对象的属性类似。利用Link对象提供的属性,可以得到链接目标的URL信息。此外,单击超级链接时,将触发OnClick事件;而鼠标指针移到超级链接上时,将触发OnMouseOver事件。7.7.6 History对象4History对象是一个不可见的对象,提供了浏览器的导航按钮的功能。History对象有三个方法,即Back、Forward和Go方法。Back方法用于在历史记录中往回搜索,相当于浏览器的“后退”按钮;Forward方法用于在历史记录中向前搜索,相当于“前进”按钮;Go方法用于跳到历史记录中的某一项。4History对象只有一个Length属性,该