VBScript - 快速指南


VBScript - 概述

VB脚本代表Visual Basic Sc​​ripting,它构成 Visual Basic for Applications (VBA)的子集。VBA 是 Microsoft 的产品,不仅包含在其他 Microsoft 产品(例如 MS Project 和 MS Office)中,而且还包含在第三方工具(例如 AUTO CAD)中。

VBScript 的特点

  • VBScript 是一种轻量级脚本语言,具有闪电般快速的解释器。

  • VBScript 在很大程度上不区分大小写。它的语法非常简单,易于学习和实现。

  • 与 C++ 或 Java 不同,VBScript 是一种基于对象的脚本语言,而不是面向对象的编程语言。

  • 它使用组件对象模型(COM)来访问其执行环境的元素。

  • VBScript 只有在 Internet Explorer (IE)、Internet Information Services (IIS)和 Windows Scripting Host (WSH)等主机环境中执行才能成功执行

VBscript – 版本历史和用途

VBScript 早在 1996 年就由 Microsoft 推出,其第一个版本是 1.0。VBScript 当前的稳定版本是 5.8,它作为 IE8 或 Windows 7 的一部分提供。VBScript 的使用领域非常广泛,并不限于以下列表。

  • VBScript 在流行的自动化测试工具之一——Quick Test Professional(缩写为QTP)中用作脚本语言

  • Windows 脚本主机,主要由 Windows 系统管理员用于自动化 Windows 桌面。

  • Active Server Pages (ASP)是一种服务器端脚本环境,用于使用 VBScript 或 Java Script 创建动态网页。

  • VBScript 用于 Microsoft Internet Explorer 中的客户端脚本编写。

  • Microsoft Outlook Forms 通常在 VBScript 上运行;但是,应用程序级编程依赖于 VBA(Outlook 2000 及以上版本)。

缺点

  • VBscript 仅由 IE 浏览器使用。其他浏览器如 Chrome、Firefox 不支持 VBScript。因此,JavaScript 优于 VBScript。

  • VBScript 的命令行支持有限。

  • 由于默认没有可用的开发环境,调试起来比较困难。

VBScript 现在在哪里?

VBScript 的当前版本是 5.8,随着 .NET 框架的最新发展,Microsoft 决定将来在 ASP.NET 中提供对 VBScript 的支持,以进行 Web 开发。因此,不会再有任何新版本的 VBScript 引擎,但 Microsoft 维护工程团队正在解决整个缺陷修复和安全问题。但是,VBScript 引擎默认情况下将作为所有 Microsoft Windows 和 IIS 的一部分提供。

VBScript - 语法

你的第一个 VBScript

让我们编写一个 VBScript 来打印“Hello World”。

<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         document.write("Hello World!")
      </script>
   </body>
</html>

在上面的示例中,我们调用了一个函数document.write,它将一个字符串写入 HTML 文档中。此函数可用于编写文本、HTML 或两者。因此,上面的代码将显示以下结果 -

Hello World!

空格和换行符

VBScript 会忽略 VBScript 程序中出现的空格、制表符和换行符。人们可以在程序中自由使用空格、制表符和换行符,因此您可以以一种整洁一致的方式自由地格式化和缩进程序,使代码易于阅读和理解。

格式化

VBScript 基于 Microsoft 的 Visual Basic。与 JavaScript 不同,不使用分号等语句终止符来终止特定语句。

单行语法

当两行或多行 VBScript 应该写在一行中时,使用冒号。因此,在 VBScript 中,冒号充当行分隔符。

<script language = "vbscript" type = "text/vbscript">
   var1 = 10 : var2 = 20
</script>

多行语法

当 VBScript 中的语句很长并且用户希望将其分成多行时,则用户必须使用下划线“_”。这提高了代码的可读性。以下示例说明了如何使用多行。

<script language = "vbscript" type = "text/vbscript">
   var1 = 10 
   var2 = 20
   Sum = var1 + var2  
   document.write("The Sum of two numbers"&_"var1 and var2 is " & Sum)
</script>

保留字

下面的列表显示了 VBScript 中的保留字。这些保留字不应该用作常量、变量或任何其他标识符名称。

环形 L集合
模组 新的 下一个
不是 没有什么 无效的
选项 选修的
或者 参数数组 保存
私人的 民众 引发事件
重新调暗 雷姆 恢复
设定集 选择
共享 单身的 静止的
停止 然后
真的 类型
作为 布尔值
通过引用 字节 拜尔
称呼 案件 班级
常量 货币 调试
暗淡 双倍的
每个 别的 否则如果
空的 结尾 万一
枚举 方程 事件
出口 错误的 为了
功能 得到
如果 小鬼 实施
整数
喜欢 长的
类型 直到 变体
文德 尽管
异或 评估 执行
消息框 擦除 执行全局
选项显式 随机化 发送密钥

区分大小写

VBScript 是一种不区分大小写的语言。这意味着语言关键字、变量、函数名称和任何其他标识符不需要以一致的字母大写形式键入。因此标识符 int_counter、INT_Counter 和 INT_COUNTER 在 VBScript 中具有相同的含义。

VBScript 中的注释

注释用于记录程序逻辑和用户信息,其他程序员将来可以使用这些信息无缝地处理相同的代码。它可以包括诸如开发者、修改者之类的信息,并且还可以包括合并的逻辑。执行时解释器会忽略注释。VBScript 中的注释由两种方法表示。

1. 任何以单引号 (') 开头的语句都被视为注释。

以下是示例 -

<script language = "vbscript" type = "text/vbscript">
   <!—
      ' This Script is invoked after successful login
      ' Written by : TutorialsPoint
      ' Return Value : True / False
   //- >
</script>

2. 任何以关键字“REM”开头的语句。

以下是示例 -

<script language = "vbscript" type = "text/vbscript">
   <!—
      REM This Script is written to Validate the Entered Input
      REM Modified by  : Tutorials point/user2
   //- >
</script>

在浏览器中启用 VBScript

并非所有现代浏览器都支持 VBScript。VBScript 仅受 Microsoft Internet Explorer 支持,而其他浏览器(Firefox 和 Chrome)仅支持 JavaScript。因此,开发人员通常更喜欢 JavaScript 而不是 VBScript。

尽管 Internet Explorer (IE) 支持 VBScript,但您可能需要手动启用或禁用此功能。本教程将使您了解在 Internet Explorer 中启用和禁用 VBScript 支持的过程。

Internet Explorer 中的 VBScript

以下是在 Internet Explorer 中打开或关闭 VBScript 的简单步骤 -

  • 从菜单中选择“工具”→“Internet 选项”

  • 从对话框中选择安全选项卡

  • 单击自定义级别按钮

  • 向下滚动直到找到脚本选项

  • 选择“活动脚本”下的“启用”单选按钮

  • 最后点击确定就出来了

要在 Internet Explorer 中禁用 VBScript 支持,您需要选择“活动脚本”下的“禁用”单选按钮。

VBScript - 展示位置

HTML 文件中的 VBScript 放置

可以灵活地将 VBScript 代码包含在 HTML 文档中的任何位置。但在 HTML 文件中包含 VBScript 的最佳方法如下 -

  • <head>...</head> 部分中的脚本。

  • <body>...</body> 部分中的脚本。

  • <body>...</body> 和 <head>...</head> 部分中的脚本。

  • 在外部文件中编写脚本,然后包含在 <head>...</head> 部分中。

在下一节中,我们将看到如何以不同的方式使用 VBScript -

<head>...</head> 部分中的 VBScript

如果您想让脚本在某些事件上运行,例如当用户单击某处时,那么您可以将该脚本放置在头部,如下所示 -

<html>
   <head>
      <script type = "text/Vbscript">
         <!--
            Function sayHello() 
               Msgbox("Hello World")
            End Function
         //-->
      </script>
   </head>
   
   <body>
      <input type = "button" onclick = "sayHello()" value = "Say Hello" />
   </body>
</html>

它将产生以下结果 - 名为 SayHello 的按钮。单击该按钮后,将向用户显示消息框,其中包含消息“Hello World”。

   

<body>...</body> 部分中的 VBScript

如果您需要在页面加载时运行脚本以便脚本在页面中生成内容,则该脚本位于文档的 <body> 部分中。在这种情况下,您不会使用 VBScript 定义任何函数 -

<html>
   <head> </head>
   <body>
      <script type = "text/vbscript">
         <!--
            document.write("Hello World")
         //-->
      </script>
      <p>This is web page body </p>
   </body>
</html>

这将产生以下结果 -

Hello World
This is web page body 

<body> 和 <head> 部分中的 VBScript

您可以将 VBScript 代码一起放入 <head> 和 <body> 部分,如下所示 -

<html>
   <head>
      <script type = "text/vbscript">
         <!--
            Function sayHello() 
               msgbox("Hello World")
            End Function
         //-->
      </script>
   </head>
   
   <body>
      <script type = "text/vbscript">
         <!--
         document.write("Hello World")
         //-->
      </script>
      <input type = "button" onclick = "sayHello()" value = "Say Hello" />
   </body>
</html>

它将产生以下结果 - 带有“Say Hello”按钮的 Hello World 消息。单击该按钮后,将向用户显示带有消息“Hello World”的消息框。

Hello World 

外部文件中的 VBScript

当您开始更广泛地使用 VBScript 时,您可能会发现在某些情况下您会在站点的多个页面上重复使用相同的 VBScript 代码。您不限于在多个 HTML 文件中维护相同的代码。

script标签提供了一种机制,允许您将 VBScript 存储在外部文件中,然后将其包含到 HTML 文件中下面是一个示例,展示如何使用script标签及其src属性在 HTML 代码中包含外部 VBScript 文件 -

<html>
   <head>
      <script type = "text/vbscript" src = "filename.vbs" ></script>
   </head>
   <body>
      .......
   </body>
</html>

要从外部文件源使用 VBScript,您需要将所有 VBScript 源代码写入扩展名为“.vbs”的简单文本文件中,然后包含该文件,如上所示。例如,您可以将以下内容保留在 filename.vbs 文件中,然后在包含 filename.vbs 文件后,您可以在 HTML 文件中使用sayHello函数。

Function sayHello()
   Msgbox "Hello World"
End Function

QTP 中的 VBScript 放置

VBScript 被放置在 QTP(Quick Test Professional)工具中,但它没有包含在 HTML 标签中。脚本文件以扩展名 .vbs 保存,并由 Quick Test Professional 执行引擎执行。

VBScript - 变量

VBScript 变量

变量是一个命名的内存位置,用于保存在脚本执行期间可以更改的值。VBScript 只有一种基本数据类型,即Variant

声明变量的规则 -

  • 变量名称必须以字母开头。

  • 变量名称不能超过 255 个字符。

  • 变量不应包含句点 (.)

  • 变量名在声明的上下文中应该是唯一的。

声明变量

变量使用“dim”关键字声明。由于只有一种基本数据类型,因此默认情况下所有声明的变量都是变体。因此,用户无需在声明期间提及数据类型。

示例 1 - 在此示例中,IntValue 可以用作字符串、整数甚至数组。

Dim Var

示例 2 - 两个或多个声明用逗号 (,) 分隔

Dim Variable1,Variable2

为变量赋值

值的分配类似于代数表达式。左侧是变量名称,后跟等于 (=) 符号,右侧是其值。

规则

  • 声明数值时应不带双引号。

  • 字符串值应用双引号 (") 括起来

  • 日期和时间变量应包含在井号 (#) 内

例子

' Below Example, The value 25 is assigned to the variable.
Value1 = 25

' A String Value ‘VBScript’ is assigned to the variable StrValue.
StrValue = “VBScript”

' The date 01/01/2020 is assigned to the variable DToday.
Date1 = #01/01/2020#

' A Specific Time Stamp is assigned to a variable in the below example.
Time1 = #12:30:44 PM#

变量的范围

可以使用以下确定变量范围的语句来声明变量。在过程或类中使用时,变量的范围起着至关重要的作用。

  • 暗淡
  • 民众
  • 私人的

暗淡

在过程级别使用“Dim”关键字声明的变量仅在同一过程中可用。在脚本级别使用“Dim”关键字声明的变量可用于同一脚本中的所有过程。

示例- 在下面的示例中,Var1 和 Var2 的值在脚本级别声明,而 Var3 在过程级别声明。

注意- 本章的范围是理解变量。函数将在接下来的章节中详细讨论。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim Var1
         Dim Var2
         
         Call add()
         Function add()
            Var1 = 10
            Var2 = 15
            Dim Var3
            Var3 = Var1 + Var2
            Msgbox Var3 'Displays 25, the sum of two values.
         End Function

         Msgbox Var1   ' Displays 10 as Var1 is declared at Script level
         Msgbox Var2   ' Displays 15 as Var2 is declared at Script level
         Msgbox Var3   ' Var3 has No Scope outside the procedure. Prints Empty
      </script>
   </body>
</html>

民众

使用“Public”关键字声明的变量可用于所有关联脚本中的所有过程。当声明“public”类型的变量时,Dim 关键字被“Public”替换。

示例- 在以下示例中,Var1 和 Var2 在脚本级别可用,而 Var3 在关联的脚本和过程中可用,因为它被声明为公共。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim Var1
         Dim Var2
         Public Var3

         Call add()

         Function add()
            Var1 = 10
            Var2 = 15
            Var3 = Var1+Var2
            Msgbox Var3 'Displays 25, the sum of two values.
         End Function

         Msgbox Var1   ' Displays 10 as Var1 is declared at Script level
         Msgbox Var2   ' Displays 15 as Var2 is declared at Script level
         Msgbox Var3   ' Displays 25 as Var3 is declared as Public 

      </script>
   </body>
</html>

私人的

声明为“私有”的变量仅在声明它们的脚本内具有作用域。当声明“Private”类型的变量时,Dim 关键字被“Private”替换。

示例- 在以下示例中,Var1 和 Var2 在脚本级别可用。Var3 被声明为 Private,并且仅适用于此特定脚本。“私有”变量的使用在类中更为明显。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim Var1
         Dim Var2
         Private Var3

         Call add()
         Function add()
            Var1 = 10
            Var2 = 15
            Var3 = Var1+Var2
            Msgbox Var3 'Displays the sum of two values.
         End Function

         Msgbox Var1   ' Displays 10 as Var1 is declared at Script level
         Msgbox Var2   ' Displays 15 as Var2 is declared at Script level
         Msgbox Var3   ' Displays 25 but Var3 is available only for this script.
      </script>
   </body>
</html>

VBScript - 常量

常量是一个命名的内存位置,用于保存在脚本执行期间无法更改的值。如果用户尝试更改常量值,脚本执行最终会出错。常量的声明方式与变量的声明方式相同。

声明常量

句法

[Public | Private] Const Constant_Name = Value

常量可以是公共或私有类型。使用公共或私人是可选的。公共常量可用于所有脚本和过程,而私有常量可在过程或类中使用。可以将任何值(例如数字、字符串或日期)分配给声明的常量。

实施例1

在此示例中,pi 的值为 3.4,它在消息框中显示圆的面积。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim intRadius
         intRadius = 20
         const pi = 3.14
         Area = pi*intRadius*intRadius
         Msgbox Area

      </script>
   </body>
</html>

实施例2

下面的示例说明了如何将字符串和日期值分配给常量。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Const myString = "VBScript"
         Const myDate = #01/01/2050#
         Msgbox myString
         Msgbox myDate

      </script>
   </body>
</html>

实施例3

在下面的示例中,用户尝试更改常量值;因此,它最终会出现执行错误。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim intRadius
         intRadius = 20
         const pi = 3.14
         pi = pi*pi	'pi VALUE CANNOT BE CHANGED.THROWS ERROR'
         Area = pi*intRadius*intRadius
         Msgbox Area
         
      </script>
   </body>
</html>

VBScript - 运算符

什么是运营商?

让我们采用表达式4 + 5 等于 9。这里,4和5称为操作数,+称为运算符。VBScript 语言支持以下类型的运算符 -

  • 算术运算符
  • 比较运算符
  • 逻辑(或关系)运算符
  • 串联运算符

算术运算符

VBScript 支持以下算术运算符 -

假设变量 A 为 5,变量 B 为 10,则 -

显示示例

操作员 描述 例子
+ 添加两个操作数 A + B 将得到 15
- 从第一个操作数中减去第二个操作数 A - B 将给出 -5
* 将两个操作数相乘 A * B 将给出 50
/ 分子除以分子 B/A 将给出 2
% 模数运算符和整数除法后的余数 B MOD A 将给出 0
^ 求幂运算符 B ^ A 将给出 100000

为了更好地理解这些运算符,你可以自己尝试一下

比较运算符

VBScript 语言支持以下比较运算符 -

假设变量 A 为 10,变量 B 为 20,则 -

显示示例

操作员 描述 例子
= 检查两个操作数的值是否相等,如果相等则条件为真。 (A == B) 为假。
<> 检查两个操作数的值是否相等,如果值不相等则条件成立。 (A <> B) 为真。
> 检查左操作数的值是否大于右操作数的值,如果是,则条件为真。 (A > B) 为假。
< 检查左操作数的值是否小于右操作数的值,如果是,则条件为真。 (A < B) 为真。
>= 检查左操作数的值是否大于或等于右操作数的值,如果是,则条件为真。 (A >= B) 为假。
<= 检查左操作数的值是否小于或等于右操作数的值,如果是,则条件为真。 (A <= B) 为真。

为了更好地理解这些运算符,你可以自己尝试一下

逻辑运算符

VBScript 语言支持以下逻辑运算符 -

假设变量 A 为 10,变量 B 为 0,则 -

显示示例

操作员 描述 例子
称为逻辑与运算符。如果两个条件都为 True,则表达式变为 True。 a<>0 AND b<>0 为 False。
或者 称为逻辑或运算符。如果两个条件中的任何一个为 True,则条件变为 True。 a<>0 或 b<>0 为真。
不是 称为逻辑非运算符。它反转其操作数的逻辑状态。如果条件为 True,则逻辑 NOT 运算符会将其设为 False。 NOT(a<>0 OR b<>0) 为假。
异或 称为逻辑排除。它是 NOT 和 OR 运算符的组合。如果其中一个且只有一个表达式的计算结果为 True,则结果为 True。 (a<>0 XOR b<>0) 为真。

为了更好地理解这些运算符,你可以自己尝试一下

串联运算符

VBScript 语言支持以下连接运算符 -

假设变量 A 为 5,变量 B 为 10,则 -

显示示例

操作员 描述 例子
+ 由于变量值为数字,因此将两个值相加 A + B 将得到 15
& 连接两个值 A & B 将给出 510

假设变量 A =“Microsoft”且变量 B=“VBScript”,则 -

操作员 描述 例子
+ 连接两个值 A + B 将给出 MicrosoftVBScript
& 连接两个值 A & B 将提供 MicrosoftVBScript

注意- 连接运算符可用于数字和字符串。如果变量保存数值或字符串值,输出取决于上下文。

为了更好地理解这些操作符,你可以自己尝试一下

VBScript - 决策

决策允许程序员控制脚本或其部分之一的执行流程。执行由一个或多个条件语句控制。

以下是大多数编程语言中典型决策结构的一般形式 -

VBScript 中的决策语句

VBScript 提供以下类型的决策语句。

陈述 描述
if 语句 if语句由一个布尔表达式后跟一个或多个语句组成。
if..else 语句 if else语句由一个布尔表达式后跟一个或多个语句组成。如果条件为 True,则执行If语句下的语句。如果条件为 false,则执行脚本的Else部分
if...elseif..else 语句 if语句后跟一个或多个ElseIf语句,该语句由布尔表达式组成,后跟一个可选的 else 语句,当所有条件都变为 false 时执行
嵌套 if 语句 另一个ifelseif语句内的ifelseif语句。
switch语句 switch语句允许测试变量是否与值列表相等

VBScript - 循环

可能存在这样的情况:您需要多次执行一段代码。一般来说,语句是按顺序执行的:首先执行函数中的第一个语句,然后执行第二个语句,依此类推。

编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句允许我们多次执行一条语句或一组语句,以下是 VBScript 中循环语句的一般形式。

循环架构

VBScript 提供以下类型的循环来处理循环要求。单击以下链接查看其详细信息。

循环类型 描述
for循环 多次执行一系列语句并缩写管理循环变量的代码。
for ..每个循环 如果组中至少有一个元素,则执行它,并对组中的每个元素重复执行。
while..wend 循环 它在执行循环体之前测试条件。
do..while 循环 只要条件为 True,do..While 语句就会被执行。(即)应重复循环,直到条件为 False。
do..until 循环 只要条件为 False,do..Until 语句就会被执行。(即)应重复循环,直到条件为 True。

循环控制语句

循环控制语句改变其正常顺序的执行。当执行离开作用域时,循环中的所有剩余语句都不会执行。

VBScript 支持以下控制语句。单击以下链接查看其详细信息。

控制语句 描述
退出For语句 终止For 循环语句并将执行转移到紧随循环后面的语句
退出 Do 语句 终止Do While语句并将执行转移到紧随循环后面的语句

VBScript - 事件

什么是事件?

VBScript 与 HTML 的交互是通过用户或浏览器操作页面时发生的事件来处理的。当页面加载时,这是一个事件。当用户单击按钮时,该单击也是一个事件。事件的其他示例包括按任意键、关闭窗口、调整窗口大小等。开发人员可以使用这些事件来执行 VBScript 编码响应,这会导致按钮关闭窗口、向用户显示消息、验证数据以及几乎任何事件。可以想象发生的其他类型的反应。

事件是文档对象模型 (DOM) 的一部分,每个 HTML 元素都有一组特定的事件,这些事件可以触发 VBScript 代码。请阅读这个小教程以更好地理解HTML 事件参考。在这里,我们将通过一些示例来了解事件和 VBScript 之间的关系。

onclick 事件类型

这是最常用的事件类型,当用户单击鼠标左键时发生。您可以针对此事件类型进行验证、警告等。

例子

<html>
   <head>
      <script language = "vbscript" type = "text/vbscript">
         Function sayHello() 
            msgbox "Hello World"
         End Function
      </script>
   </head>
   
   <body>
      <input type = "button" onclick = "sayHello()" value = "Say Hello"/>
   </body>
</html>

它将产生以下结果,当您单击 Hello 按钮时,将发生 onclick 事件,该事件将触发 sayHello() 函数。


onsubmit 事件类型

另一个最重要的事件类型是onsubmit。当您尝试提交表单时会发生此事件。因此,您可以针对此事件类型进行表单验证。单击“提交”按钮即可提交表单,将出现消息框。

单击“提交”按钮即可提交表单,将出现消息框。

例子

<html>
   <head> </head>
   <body>
      <script language = "VBScript">       
         Function fnSubmit()
            Msgbox("Hello Tutorialspoint.Com")
         End Function       
      </script>
      
      <form action = "/cgi-bin/test.cgi" method = "post" name = "form1" onSubmit = "fnSubmit()">
         <input name = "txt1" type = "text"><br>
         <input name = "btnButton1" type = "submit" value="Submit">
      </form>
   </body>
</html>

onmouseover 和 onmouseout

这两种事件类型将帮助您使用图像甚至文本创建漂亮的效果。当您将鼠标移至任何元素上时,会发生 onmouseover 事件;当您将鼠标从该元素上移开时,会发生onmouseout事件。

例子

<html>
   <head> </head>
   <body>
      <script language = "VBScript">       
         Function AlertMsg
            Msgbox("ALERT !")
         End Function
          
         Function onmourse_over()
            Msgbox("Onmouse Over")
         End Function

         Sub txt2_OnMouseOut()
            Msgbox("Onmouse Out !!!")
         End Sub
          
         Sub btnButton_OnMouseOut()
            Msgbox("onmouse out on Button !")
         End Sub
      </script>
      
      <form action = "page.cgi" method = "post" name = "form1">
         <input name = "txt1" type = "text" OnMouseOut = "AlertMsg()"><br>
         <input name = "txt2" type = "text" OnMouseOver = "onmourse_over()">
         <br><input name = "btnButton" type = "button" value = "Submit">
      </form>
   </body>
</html>

当您将鼠标悬停在文本框上以及将焦点从文本框和按钮上移开时,它将产生结果。

HTML 4 标准事件

此处列出了标准 HTML 4 事件供您参考。这里,script 表示要针对该事件执行的 VBScript 函数。

事件 价值 描述
变化 脚本 当元素更改时运行脚本
提交 脚本 提交表单时运行脚本
复位时 脚本 重置表单时运行脚本
模糊 脚本 当元素失去焦点时运行脚本
焦点 脚本 当元素获得焦点时运行脚本
按下按键 脚本 按下键时运行脚本
按键 脚本 按下并释放按键时运行脚本
按键启动 脚本 释放按键时运行脚本
单击时 脚本 单击鼠标时运行脚本
双击 脚本 鼠标双击时运行脚本
鼠标按下时 脚本 按下鼠标按钮时运行脚本
鼠标移动时 脚本 当鼠标指针移动时脚本运行
鼠标移出时 脚本 当鼠标指针移出元素时运行脚本
鼠标悬停时 脚本 当鼠标指针移到元素上时运行脚本
鼠标悬停时 脚本 释放鼠标按钮时运行脚本

VBScript 和 Cookie

什么是 Cookie?

Web 浏览器和服务器使用 HTTP 协议进行通信,HTTP 是无状态协议。但对于商业网站来说,需要维护不同页面之间的会话信息。例如,一个用户注册在完成许多页面后结束。但如何在所有网页上维护用户的会话信息。在许多情况下,使用 cookie 是记住和跟踪偏好、购买、佣金以及更好的访问者体验或网站统计所需的其他信息的最有效方法。

怎么运行的?

您的服务器以 cookie 的形式向访问者的浏览器发送一些数据。浏览器可以接受cookie。如果存在,它将作为纯文本记录存储在访问者的硬盘上。现在,当访问者到达站点上的另一个页面时,浏览器会将相同的 cookie 发送到服务器以供检索。一旦检索到,您的服务器就会知道/记住之前存储的内容。Cookie 是 5 个可变长度字段的纯文本数据记录 -

  • 过期- cookie 过期的日期。如果此项为空,则当访问者退出浏览器时,cookie 将过期。

  • - 您网站的域名。

  • Path - 设置 cookie 的目录或网页的路径。如果您想从任何目录或页面检索 cookie,则该字段可能为空。

  • 安全- 如果此字段包含单词“安全”,则只能通过安全服务器检索 cookie。如果此字段为空,则不存在此类限制。

  • Name=Value - Cookie 以键和值对的形式设置和检索。

Cookie 最初是为 CGI 编程而设计的,Cookie 的数据自动在 Web 浏览器和 Web 服务器之间传输,因此服务器上的 CGI 脚本可以读取和写入存储在客户端上的 Cookie 值。

VBScript 还可以使用Document对象的 cookie 属性来操作 cookie 。VBScript 可以读取、创建、修改和删除适用于当前网页的一个或多个cookie。

存储 Cookie

创建 cookie 最简单的方法是将字符串值分配给document.cookie对象,如下所示 -

句法

document.cookie = "key1 = value1;key2 = value2;expires = date"

这里的expires属性是可选的。如果您为此属性提供有效的日期或时间,则 cookie 将在给定日期或时间到期,之后 cookie 的值将无法访问。

例子

以下是在输入cookie中设置客户名称的示例。

<html>
   <head>
      <script type = "text/vbscript">
         Function WriteCookie
            If document.myform.customer.value = "" Then
               msgbox "Enter some value!"
            Else
               cookievalue = (document.myform.customer.value)
               document.cookie = "name = " + cookievalue
               msgbox "Setting Cookies : " & "name = " & cookievalue
            End If
         End Function
      </script>
   </head>
   
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>
   </body>
</html>

它将产生以下结果。现在在文本框中输入一些内容,然后按“设置 Cookie”按钮来设置 Cookie。

Enter name:

现在,您的系统有一个名为name的 cookie 。您可以使用多个以逗号分隔的键=值对来设置多个cookie。您将在下一节中学习如何读取此 cookie。

读取 Cookie

读取 cookie 与写入 cookie 一样简单,因为document.cookie对象的值就是 cookie。因此,只要您想访问 cookie,就可以使用该字符串。document.cookie字符串将保留一个由分号分隔的name = value对的列表,其中namecookie的名称,value 是其字符串值。您可以使用字符串的split()函数将字符串分解为键和值,如下所示 -

例子

以下是获取上一节中设置的 cookie 的示例 -

<html>
   <head>
      <script type = "text/vbscript">
         Function ReadCookie
            allcookies = document.cookie
            msgbox "All Cookies : " + allcookies
            cookiearray = split(allcookies,";")
            
            For i = 0 to ubound(cookiearray)
               Name  = Split(cookiearray(i),"=")
               Msgbox "Key is : " + Name(0) + " and Value is : " + Name(1)
            Next
         End Function
      </script>
   </head>
   
   <body>
      <form name = "myform" action = "">
         <input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/>
      </form>
   </body>
</html>

注意- 这里,UBound是Array类的方法,它返回数组的长度。我们将在单独的章节中讨论数组;在那之前,请尝试消化它。

它将产生以下结果。现在,按“获取 Cookie”按钮即可查看您在上一节中设置的 Cookie。

注意- 您的机器上可能已经设置了一些其他 cookie。因此,上面的代码将显示您机器上设置的所有 cookie。

设置 Cookie 到期日期

您可以通过设置到期日期并将到期日期保存在 cookie 中,将 cookie 的生命周期延长到当前浏览器会话之后。这可以通过将过期属性设置为日期和时间来完成。

例子

以下示例说明了如何设置 1 个月后的 cookie 过期日期 -

<html>
   <head>
      <script type = "text/vbscript">
         Function WriteCookie()
            x = now()
            y = dateadd("m",1,now())  ' Making it to expire next 
            cookievalue = document.myform.customer.value
            document.cookie = "name = "  & cookievalue
            document.cookie = "expires = " & y
            msgbox("Setting Cookies : " & "name=" & cookievalue )
         End Function
      </script>
   </head>
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>
   </body>
</html>

删除 Cookie

有时,您会想要删除 cookie,以便后续读取 cookie 的尝试不会返回任何内容。为此,您只需将到期日期设置为过去的时间即可。

例子

以下示例说明了如何通过将 cookie 的过期日期设置为过去 1 个月来删除 cookie -

<html>
   <head>
      <script type = "text/vbscript">
         Function WriteCookie()
            x = now()
            x = now()
            a = Month(x)-1
            b = day(x)
            c = year(x)
            d = DateSerial(c,a,b)
            e = hour(x) 
            
            msgbox e
            f = minute(x)
            
            msgbox f
            d = cdate(d & " " & e & ":" & f)
            
            msgbox d
            cookievalue = document.myform.customer.value
            document.cookie = "name = "  & cookievalue
            document.cookie = "expires = " & d
            msgbox("Setting Cookies : " & "name=" & cookievalue )
         End Function
      </script>
   </head>
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>
   </body>
</html>

VBScript - 数字

数字函数帮助开发人员以有效的方式处理数字,并帮助他们转换其子类型。它还可以帮助他们利用与 VBScript 相关的内置数学函数。

数字转换函数

数字函数帮助我们将给定数字从一种数据子类型转换为另一种数据子类型。

显示示例

先生编号 功能说明
1

CDb

一个函数,它将给定数量的任何变体子类型转换为 double

2

内特

一个函数,它将给定数量的任何变体子类型转换为整数

3

CLng

一个函数,它将给定数量的任何变体子类型转换为 Long

4

CSng

一个函数,它将给定数量的任何变体子类型转换为 Single

5

十六进制

一个函数,它将给定数量的任何变体子类型转换为十六进制

数字格式化函数

数字格式化函数可帮助开发人员以他们希望的格式表达给定的数字。

显示示例

先生编号 功能说明
1

格式编号

一个函数,它将返回一个数字格式的表达式

2

格式百分比

一个函数,它将返回一个百分比格式的表达式

数学函数

数学函数帮助我们评估给定输入数字的数学和三角函数。

显示示例

先生编号 功能说明
1

INT

一个函数,返回给定数字的整数部分

2

使固定

一个函数,返回给定数字的整数部分

3

日志

一个函数,返回给定数字的自然对数。不允许使用负数

4

十月

一个函数,返回给定数字的八进制值。

5

十六进制

一个函数,返回给定数字的十六进制值

6

研发

一个函数,返回 0 到 1 之间的随机数

7

信号

一个函数,返回与指定数字的符号对应的数字

8

平方

一个函数,返回给定数字的平方根。不允许使用负数

9

腹肌

一个函数,返回给定数字的绝对值

10

经验值

一个函数,返回 e 增加到指定数字的值

11

一个函数,返回给定数字的正弦值

12

科斯

一个函数,返回给定数字的余弦值

13

一个函数,返回给定数字的 tan 值

VBScript - 字符串

字符串是字符序列,可以由字母、数字、特殊字符或全部组成。如果变量用双引号“”括起来,则称该变量是字符串。

句法

variablename = "string"

例子

str1 = "string"   ' Only Alphabets
str2 = "132.45"   ' Only Numbers
str3 = "!@#$;*"   ' Only Special Characters
Str4 = "Asc23@#"  ' Has all the above

字符串函数

有预定义的 VBScript 字符串函数,可以帮助开发人员非常有效地处理字符串。以下是 VBScript 支持的字符串方法。请点击每一种方法来详细了解。

函数名称 描述
内斯特 返回指定子字符串的第一次出现。搜索从左到右进行。
指令修订版 返回指定子字符串的第一次出现。搜索从右到左进行。
案例 返回指定字符串的小写字母。
乌卡塞 返回指定字符串的大写形式。
左边 返回从字符串左侧算起的特定数量的字符。
正确的 返回字符串右侧的特定数量的字符。
根据指定的参数从字符串中返回特定数量的字符。
修剪 返回删除指定字符串左侧空格后的字符串。
修剪 返回删除指定字符串右侧空格后的字符串。
修剪 删除前导空格和尾随空格后返回字符串值。
返回给定字符串的长度。
代替 将一个字符串替换为另一个字符串后返回一个字符串。
空间 用指定数量的空格填充字符串。
StrComp 比较两个指定的字符串后返回一个整数值。
细绳 返回具有指定字符指定次数的字符串。
反转 反转给定字符串的字符序列后返回一个字符串。

VBScript - 数组

什么是数组?

我们很清楚,变量是存储值的容器。有时,开发人员可以一次在一个变量中保存多个值。当一系列值存储在单个变量中时,它被称为数组变量

数组声明

数组的声明方式与变量的声明方式相同,只是数组变量的声明使用括号。在以下示例中,括号中提到了数组的大小。

'Method 1 : Using Dim
Dim arr1() 'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5) 'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • 虽然数组大小显示为 5,但由于数组索引从 0 开始,它可以容纳 6 个值。

  • 数组索引不能为负数。

  • VBScript 数组可以在数组中存储任何类型的变量。因此,数组可以在单个数组变量中存储整数、字符串或字符。

为数组赋值

通过针对要分配的每个值指定数组索引值,将值分配给数组。它可以是一个字符串。

例子

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim arr(5)
         arr(0) = "1"            'Number as String
         arr(1) = "VBScript"     'String
         arr(2) = 100            'Number
         arr(3) = 2.45           'Decimal Number
         arr(4) = #10/07/2013#   'Date
         arr(5) = #12.45 PM#     'Time

         document.write("Value stored in Array index 0 : " & arr(0) & "<br />")
         document.write("Value stored in Array index 1 : " & arr(1) & "<br />")
         document.write("Value stored in Array index 2 : " & arr(2) & "<br />")
         document.write("Value stored in Array index 3 : " & arr(3) & "<br />")
         document.write("Value stored in Array index 4 : " & arr(4) & "<br />")
         document.write("Value stored in Array index 5 : " & arr(5) & "<br />")

      </script>
   </body>
</html>

当上述代码保存为 .HTML 并在 Internet Explorer 中执行时,会产生以下结果 -

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

多维数组

数组不仅限于一维,最多可以有 60 维。二维数组是最常用的数组。

例子

在以下示例中,声明了一个具有 3 行和 4 列的多维数组。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim arr(2,3)	' Which has 3 rows and 4 columns
         arr(0,0) = "Apple" 
         arr(0,1) = "Orange"
         arr(0,2) = "Grapes"           
         arr(0,3) = "pineapple" 
         
         arr(1,0) = "cucumber"           
         arr(1,1) = "beans"           
         arr(1,2) = "carrot"           
         arr(1,3) = "tomato"    
         
         arr(2,0) = "potato"             
         arr(2,1) = "sandwitch"            
         arr(2,2) = "coffee"             
         arr(2,3) = "nuts"            
                  
         document.write("Value in Array index 0,1 : " &  arr(0,1) & "<br />")
         document.write("Value in Array index 2,2 : " &  arr(2,2) & "<br />")

      </script>
   </body>
</html>

当上述代码保存为 .HTML 并在 Internet Explorer 中执行时,会产生以下结果 -

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

修正声明

ReDim 语句用于声明动态数组变量并分配或重新分配存储空间。

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
  • Preserve - 一个可选参数,用于在更改最后一个维度的大小时保留现有数组中的数据。

  • varname - 必需参数,表示变量的名称,应遵循标准变量命名约定。

  • subscripts - 必需参数,指示数组的大小。

例子

在下面的示例中,数组已被重新定义,然后在数组的现有大小更改时保留值。

注意- 将数组大小调整为小于原来大小时,被消除元素中的数据将丢失。

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim a()
         i = 0
         redim a(5)
         a(0) = "XYZ"
         a(1) = 41.25
         a(2) = 22
           
         REDIM PRESERVE a(7)
         For i = 3 to 7
         a(i) = i
         Next
           
         'to Fetch the output
         For i = 0 to ubound(a)
            Msgbox a(i)
         Next
      </script>
   </body>
</html>

当我们将上面的脚本保存为 HTML 并在 Internet Explorer 中执行它时,它会产生以下结果。

XYZ
41.25
22
3
4
5
6
7

数组方法

VBScript 中有各种内置函数可以帮助开发人员有效地处理数组。下面列出了与数组结合使用的所有方法。请点击方法名称了解详细信息。

功能 描述
LB界 一个函数,返回与给定数组的最小下标相对应的整数。
优邦德 一个函数,返回与给定数组的最大下标相对应的整数。
分裂 一个函数,返回一个数组,其中包含