V b腳本代表isualbasic腳本,它構成visualbasicforapplications(V b a)的一個子集。VBA是微軟的一個產品,它不僅包括在微軟的其他產品中,如MS-Project和MS-Office,也包括在第三方工具中,如AUTO CAD。
Features of VBScript
VBScript是一種輕量級腳本語言,它有一個快速的解釋器。
VBScript在很大程度上是不區分大小寫的。它有一個非常簡單的語法,易於學習和實現。
與C++或java不同,VBScript是一種基於對象的腳本語言而不是面向對象的程式語言。
它使用組件對象模型(COM)來訪問執行它的環境的元素。
只有在主機環境(如Internet Explorer(IE)、Internet信息服務(IIS)和Windows腳本主機(WSH)中執行VBScript,才能成功執行VBScript
VBscript – Version History and Uses
VBScript是微軟在1996年推出的,它的第一個版本是1.0。VBScript的當前穩定版本是5.8,它是IE8或Windows 7的一部分。VBScript的使用區域非常豐富,不限於以下列表。
VBScript在一種流行的自動化測試工具中用作腳本語言-Quick Test Professional縮寫爲QTP
Windows腳本主機,主要由Windows系統管理員用於自動化Windows桌面。
Active Server Pages(ASP),用於創建使用VBScript或Java腳本的動態網頁的伺服器端腳本環境。
VBScript用於Microsoft Internet Explorer中的客戶端腳本。
Microsoft Outlook窗體通常在VBScript上運行;但是,應用程式級編程依賴於VBA(Outlook 2000以後的版本)。
Disadvantages
VBscript僅用於IE瀏覽器。其他瀏覽器如Chrome、Firefox不支持VBScript。因此,JavaScript優於VBScript。
VBScript對命令行的支持有限。
由於默認情況下沒有可用的開發環境,調試很困難。
Where VBScript is Today ?
目前的VBScript版本是5.8,隨著.NET框架的發展,微軟決定在未來的ASP.NET中爲web開發提供VBScript的支持。因此,將不再有任何新版本的VBScript引擎,但整個缺陷修復和安全問題正在由微軟支持工程團隊解決。但是,默認情況下,VBScript引擎將作爲所有Microsoft Windows和IIS的一部分提供。
VBScript - Syntax
Your First 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!
Whitespace and Line Breaks
VBScript忽略VBScript程序中出現的空格、制表符和換行符。一個人可以在程序中自由地使用空格、制表符和換行符,這樣你就可以自由地以整潔一致的方式格式化和縮進你的程序,使代碼易於閱讀和理解。
Formatting
VBScript基於微軟的Visual Basic。與JavaScript不同,沒有使用分號之類的語句終止符來終止特定的語句。
Single Line Syntax
當兩行或多行VBScript應在一行中寫入時,使用冒號。因此,在VBScript中,冒號充當行分隔符。
<script language = "vbscript" type = "text/vbscript"> var1 = 10 : var2 = 20 </script>
Multiple Line Syntax
如果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>
Reserved Words
下表顯示VBScript中的保留字。這些保留字不應用作常量或變量或任何其他標識符名稱。
Loop | LSet | Me |
Mod | New | Next |
Not | Nothing | Null |
On | Option | Optional |
Or | ParamArray | Preserve |
Private | Public | RaiseEvent |
ReDim | Rem | Resume |
RSet | Select | Set |
Shared | Single | Static |
Stop | Sub | Then |
To | True | Type |
And | As | Boolean |
ByRef | Byte | ByVal |
Call | Case | Class |
Const | Currency | Debug |
Dim | Do | Double |
Each | Else | ElseIf |
Empty | End | EndIf |
Enum | Eqv | Event |
Exit | False | For |
Function | Get | GoTo |
If | Imp | Implements |
In | Integer | Is |
Let | Like | Long |
TypeOf | Until | Variant |
Wend | While | With |
Xor | Eval | Execute |
Msgbox | Erase | ExecuteGlobal |
Option Explicit | Randomize | SendKeys |
Case Sensitivity
VBScript是一種不區分大小寫的語言。這意味著語言關鍵字、變量、函數名和任何其他標識符都不必以字母的大寫形式鍵入。因此,標識符int_counter、int_counter和int_counter在VBScript中具有相同的含義。
Comments in VBScript
注釋用於記錄程序邏輯和用戶信息,以便其他程式設計師將來可以無縫地處理同一代碼。它可以包括由開發、修改等信息,也可以包括合併的邏輯。執行時,解釋程序將忽略注釋。VBScript中的注釋用兩種方法表示。
一。任何以單引號(')開頭的語句都被視爲注釋
下面是一個例子−
<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>
Enabling VBScript in Browsers
不是所有的現代瀏覽器都支持VBScript。VBScript僅由微軟的Internet Explorer支持,而其他瀏覽器(Firefox和Chrome)僅支持JavaScript。因此,開發人員通常更喜歡JavaScript而不是VBScript。
雖然Internet Explorer(IE)支持VBScript,但可能需要手動啓用或禁用此功能。本教程將使您了解在Internet Explorer中啓用和禁用VBScript支持的過程。
VBScript in Internet Explorer
下面是在Internet Explorer中打開或關閉VBScript的簡單步驟;
從菜單中選擇「工具」和「Internet選項」
從對話框中選擇「安全」選項卡
單擊「自定義級別」按鈕
向下滾動,直到找到腳本選項
選擇「活動腳本」下的「啓用」單選按鈕
最後點擊OK出來
要在Internet Explorer中禁用VBScript支持,需要在活動腳本下選擇禁用單選按鈕。
VBScript - Placements
VBScript Placement in HTML File
在HTML文檔的任何地方都可以靈活地包含VBScript代碼。但是,在HTML文件中包含VBScript的最佳方式如下所示−
在「標題」部分中編寫腳本。
在「正文」部分中編寫腳本。
在<body>…</body>和<head>…</head>部分中編寫腳本。
在外部文件中編寫腳本,然後包含在「標題」部分中。
在下一節中,我們將了解如何以不同的方式放置VBScript;
VBScript in <head>...</head> section
如果您想讓腳本在某個事件上運行,例如當用戶單擊某個地方時,那麼您將按以下方式將該腳本放置在頭部中−
<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」。
VBScript in <body>...</body> section
如果需要在頁面加載時運行腳本,以便腳本在頁面中生成內容,則腳本將進入文檔的<正文>部分。在這種情況下,不會使用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
VBScript in <body> and <head> sections
您可以將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 in External File
當您開始更廣泛地使用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
VBScript Placement in QTP
VBScript放在QTP(Quick Test Professional)工具中,但它不包含在HTML標記中。腳本文件以.vbs擴展名保存,並由Quick Test Professional執行引擎執行。
VBScript - Variables
VBScript Variables
變量是一個命名的內存位置,用於保存在腳本執行期間可以更改的值。VBScript只有一個基本數據類型,變量。
聲明變量的規則&minus
變量名必須以字母表開頭。
變量名不能超過255個字符。
變量不應包含句點(.)
變量名在聲明的上下文中應該是唯一的。
Declaring Variables
變量使用「dim」關鍵字聲明。由於只有一種基本數據類型,因此默認情況下,所有聲明的變量都是變量。因此,用戶不必在聲明期間提及數據的類型。
示例1−在本例中,IntValue可以用作字符串、整數甚至數組。
Dim Var
示例2−兩個或多個聲明用逗號(,)分隔
Dim Variable1,Variable2
Assigning Values to the Variables
賦值類似於代數表達式。左邊的變量名,後跟一個等於(=)的符號,然後右邊的值。
Rules
數值應聲明爲不帶雙引號。
字符串值應該用雙引號(「)括起來
日期和時間變量應包含在哈希符號(#)中
Examples
' 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#
Scope of the Variables
可以使用以下語句聲明變量,這些語句確定變量的範圍。變量的作用域在過程或類中使用時起著關鍵作用。
- Dim
- Public
- Private
Dim
在過程級別使用「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」關鍵字聲明的變量可用於所有相關腳本中的所有過程。當聲明「public」類型的變量時,Dim關鍵字將替換爲「public」。
示例−在下面的示例中,Var1和Var2在腳本級別可用,而Var3在關聯的腳本和過程中可用,因爲它被聲明爲Public。
<!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
聲明爲「Private」的變量僅在聲明它們的腳本中具有作用域。當聲明「Private」類型的變量時,Dim關鍵字將替換爲「Private」。
示例−在下面的示例中,Var1和Var2在腳本級別可用。Var3被聲明爲Private,它只適用於這個特定的腳本。在類中使用「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 - Constants
常量是一個命名的內存位置,用於保存在腳本執行期間無法更改的值。如果用戶試圖更改常量值,則腳本執行將以錯誤結束。常量的聲明方式與變量的聲明方式相同。
Declaring Constants
Syntax
[Public | Private] Const Constant_Name = Value
常量可以是Public或Private類型。使用Public或Private是可選的。公共常量可用於所有腳本和過程,而私有常量可用於過程或類。可以將任何值(如數字、字符串或日期)賦給聲明的常量。
Example 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>
Example 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>
Example 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 - Operators
What is an operator?
讓我們假設一個表達式4+5等於9。這裡,4和5稱爲操作數,而+稱爲運算符。VBScript語言支持以下類型的運算符−
- Arithmetic Operators
- Comparison Operators
- Logical (or Relational) Operators
- Concatenation Operators
The Arithmetic Operators
VBScript支持以下算術運算符−
假設變量A爲5,變量B爲10,則-;
Operator | Description | Example |
---|---|---|
+ | Adds two operands | A + B will give 15 |
- | Subtracts second operand from the first | A - B will give -5 |
* | Multiply both operands | A * B will give 50 |
/ | Divide numerator by denumerator | B / A will give 2 |
% | Modulus Operator and remainder of after an integer division | B MOD A will give 0 |
^ | Exponentiation Operator | B ^ A will give 100000 |
要更好地理解這些運算符,您可以自己嘗試。
The Comparison Operators
VBScript語言支持以下比較運算符−
假設變量A爲10,變量B爲20,則-;
Operator | Description | Example |
---|---|---|
= | Checks if the value of two operands are equal or not, if yes then condition becomes true. | (A == B) is False. |
<> | Checks if the value of two operands are equal or not, if values are not equal then condition becomes true. | (A <> B) is True. |
> | Checks if the value of left operand is greater than the value of right operand, if yes then condition becomes true. | (A > B) is False. |
< | Checks if the value of left operand is less than the value of right operand, if yes then condition becomes true. | (A < B) is True. |
>= | Checks if the value of left operand is greater than or equal to the value of right operand, if yes then condition becomes true. | (A >= B) is False. |
<= | Checks if the value of left operand is less than or equal to the value of right operand, if yes then condition becomes true. | (A <= B) is True. |
要更好地理解這些運算符,您可以自己嘗試。
The Logical Operators
VBScript語言支持以下邏輯運算符−
假設變量A保持10,變量B保持0,然後&負;
Operator | Description | Example |
---|---|---|
AND | Called Logical AND operator. If both the conditions are True, then Expression becomes True. | a<>0 AND b<>0 is False. |
OR | Called Logical OR Operator. If any of the two conditions is True, then condition becomes True. | a<>0 OR b<>0 is true. |
NOT | Called Logical NOT Operator. It reverses the logical state of its operand. If a condition is True, then the Logical NOT operator will make it False. | NOT(a<>0 OR b<>0) is false. |
XOR | Called Logical Exclusion. It is the combination of NOT and OR Operator. If one, and only one, of the expressions evaluates to True, result is True. | (a<>0 XOR b<>0) is true. |
要更好地理解這些運算符,您可以自己嘗試。
The Concatenation Operators
VBScript語言支持以下連接運算符−
假設變量A爲5,變量B爲10,則-;
顯示示例
Operator | Description | Example |
---|---|---|
+ | Adds two Values as Variable Values are Numeric | A + B will give 15 |
& | Concatenates two Values | A & B will give 510 |
假設變量A=「Microsoft」和變量B=「VBScript」,然後−
Operator | Description | Example |
---|---|---|
+ | Concatenates two Values | A + B will give MicrosoftVBScript |
& | Concatenates two Values | A & B will give MicrosoftVBScript |
注意−連接運算符可用於數字和字符串。如果變量包含數值或字符串值,則輸出取決於上下文。
要更好地理解這些運算符,您可以自己嘗試。
VBScript - Decision Making
決策允許程式設計師控制腳本或其中一個部分的執行流。執行由一個或多個條件語句控制。
下面是大多數程式語言中典型的決策結構的一般形式;
VBScript提供以下類型的決策語句。
Statement | Description |
---|---|
if statement | An if statement consists of a Boolean expression followed by one or more statements. |
if..else statement | An if else statement consists of a Boolean expression followed by one or more statements. If the condition is True, the statements under the If statements are executed. If the condition is false, then the Else part of the script is Executed |
if...elseif..else statement | An if statement followed by one or more ElseIf Statements, that consists of Boolean expressions and then followed by an optional else statement, which executes when all the condition becomes false. |
nested if statements | An if or elseif statement inside another if or elseif statement(s). |
switch statement | A switch statement allows a variable to be tested for equality against a list of values. |
VBScript - Loops
可能存在需要多次執行代碼塊的情況。一般來說,語句是按順序執行的:首先執行函數中的第一條語句,然後執行第二條語句,依此類推。
程式語言提供各種控制結構,允許更複雜的執行路徑。loop語句允許我們多次執行一個或一組語句,下面是VBScript中loop語句的常規from。
VBScript提供以下類型的循環來處理循環需求。單擊以下連結以檢查其詳細信息。
Loop Type | Description |
---|---|
for loop | Executes a sequence of statements multiple times and abbreviates the code that manages the loop variable. |
for ..each loop | It is executed if there is at least one element in group and reiterated for each element in a group. |
while..wend loop | It tests the condition before executing the loop body. |
do..while loops | The do..While statements will be executed as long as condition is True.(i.e.,) The Loop should be repeated till the condition is False. |
do..until loops | The do..Until statements will be executed as long as condition is False.(i.e.,) The Loop should be repeated till the condition is True. |
Loop Control Statements
循環控制語句改變其正常順序的執行。當執行離開作用域時,循環中的所有剩餘語句都不會執行。
VBScript支持以下控制語句。單擊以下連結以檢查其詳細信息。
Control Statement | Description |
---|---|
Exit For statement | Terminates the For loop statement and transfers execution to the statement immediately following the loop |
Exit Do statement | Terminates the Do While statement and transfers execution to the statement immediately following the loop |
VBScript - Events
What is an Event ?
VBScript與HTML的交互是通過用戶或瀏覽器操作頁面時發生的事件來處理的。當頁面加載時,這是一個事件。當用戶單擊某個按鈕時,該單擊也是一個事件。事件的其他示例包括按任意鍵、關閉窗口、調整窗口大小等。開發人員可以使用這些事件執行VBScript編碼的響應,這將導致按鈕關閉窗口、向用戶顯示消息、驗證數據以及幾乎可以發生的任何其他類型的響應。
事件是文檔對象模型(DOM)的一部分,每個HTML元素都有一組特定的事件,這些事件可以觸發VBScript代碼。爲了更好地理解html事件引用,請閱讀本小教程。在這裡,我們將看到幾個例子來理解事件和VBScript之間的關係。
onclick Event Type
這是最常用的事件類型,當用戶單擊滑鼠左鍵時發生。您可以針對此事件類型設置驗證、警告等。
Example
<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 event type
另一個最重要的事件類型是onsubmit。嘗試提交表單時發生此事件。所以您可以針對此事件類型進行表單驗證。點擊提交按鈕提交表單,出現消息框。
點擊提交按鈕提交表單,出現消息框。
Example
<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 and onmouseout
這兩種事件類型將幫助您創建良好的效果與圖像,甚至與文本以及。onmouseover事件在您將滑鼠移到任何元素上時發生,onmouseout事件在您將滑鼠從該元素中取出時發生。
Example
<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 Standard Events
這裡列出了標準的HTML 4事件供您參考。這裡,script指示要針對該事件執行的VBScript函數。
Event | Value | Description |
---|---|---|
onchange | script | Script runs when the element changes |
onsubmit | script | Script runs when the form is submitted |
onreset | script | Script runs when the form is reset |
onblur | script | Script runs when the element loses focus |
onfocus | script | Script runs when the element gets focus |
onkeydown | script | Script runs when key is pressed |
onkeypress | script | Script runs when key is pressed and released |
onkeyup | script | Script runs when key is released |
onclick | script | Script runs when a mouse click |
ondblclick | script | Script runs when a mouse double-click |
onmousedown | script | Script runs when mouse button is pressed |
onmousemove | script | Script runs when mouse pointer moves |
onmouseout | script | Script runs when mouse pointer moves out of an element |
onmouseover | script | Script runs when mouse pointer moves over an element |
onmouseup | script | Script runs when mouse button is released |
VBScript and Cookies
What are Cookies?
Web瀏覽器和伺服器使用HTTP協議進行通信,HTTP是一種無狀態協議。但是對於一個商業網站來說,需要維護不同頁面之間的會話信息。例如,一個用戶註冊在完成多個頁面後結束。但是如何在所有網頁上維護用戶的會話信息。在許多情況下,使用cookies是記憶和跟蹤偏好、購買、佣金和其他信息的最有效方法,這些信息是更好的訪客體驗或網站統計所需的。
How It Works?
伺服器以cookie的形式向訪問者的瀏覽器發送一些數據。瀏覽器可能接受cookie。如果是,它將作爲純文本記錄存儲在訪問者的硬碟上。現在,當訪問者到達站點上的另一個頁面時,瀏覽器會將相同的cookie發送到伺服器進行檢索。一旦檢索到,伺服器就會知道/記住先前存儲的內容。Cookies是5個可變長度欄位的純文本數據記錄;
Expires−cookie將過期的日期。如果爲空,則當訪問者退出瀏覽器時,cookie將過期。
域−站點的域名。
Path−設置cookie的目錄或網頁的路徑。如果要從任何目錄或頁面檢索cookie,則此項可能爲空。
Secure−如果此欄位包含單詞「Secure」,則只能使用安全伺服器檢索cookie。如果此欄位爲空,則不存在此類限制。
Name=Value−Cookies以鍵和值對的形式設置和檢索。
Cookies最初是爲CGI編程而設計的,Cookies的數據在web瀏覽器和web伺服器之間自動傳輸,因此伺服器上的CGI腳本可以讀寫存儲在客戶端上的cookie值。
VBScript還可以使用文檔對象的cookie屬性操作cookie。VBScript可以讀取、創建、修改和刪除應用於當前網頁的一個或多個cookie。
Storing Cookies
創建cookie的最簡單方法是爲document.cookie對象分配一個字符串值,它看起來像這樣−
Syntax
document.cookie = "key1 = value1;key2 = value2;expires = date"
這裡expires屬性是可選的。如果您爲該屬性提供了有效的日期或時間,則cookie將在給定的日期或時間過期,之後cookie的值將不可訪問。
Example
下面是在輸入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。
現在,您的系統有一個名爲name的cookie。您可以使用逗號分隔的多個key=value對設置多個cookie。下一節將學習如何閱讀此cookie。
Reading Cookies
讀取cookie和編寫cookie一樣簡單,因爲document.cookie對象的值就是cookie。所以,只要想訪問cookie,就可以使用這個字符串。document.cookie字符串將保留一個由分號分隔的name=value對的列表,其中name是cookie的name,value是其字符串值。可以使用strings'split()函數將字符串分解爲鍵和值,如下所示−
Example
下面是獲取上一節中設置的cookies的示例−
<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。
Setting the Cookies Expiration Date
通過設置過期日期並在cookie中保存過期日期,可以將cookie的壽命延長到當前瀏覽器會話之外。這可以通過將expires屬性設置爲日期和時間來完成。
Example
下面的示例演示如何在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>
Deleting a Cookie
有時,您會希望刪除cookie,以便隨後讀取cookie的嘗試不會返回任何結果。爲此,只需將到期日期設置爲過去的某個時間。
Example
下面的示例演示了如何通過將cookie的過期日期設置爲過去1個月−
<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 - Numbers
數字函數幫助開發人員高效地處理數字,並幫助他們轉換子類型。它還幫助他們利用與VBScript相關聯的內置數學函數。
Number Conversion Functions
數字函數幫助我們將給定的數字從一個數據子類型轉換爲另一個數據子類型。
Sr.No | Function & Description |
---|---|
1 | 基本法 一個函數,它將給定數目的任何變量子類型轉換爲double |
2 | 辛特 一個函數,它將給定數目的任何變量子類型轉換爲整數 |
3 | CLng公司 一個函數,它將給定數目的任何變量子類型轉換爲Long |
4 | CSng公司 一個函數,它將給定數量的任何變量子類型轉換爲單個 |
5 | 十六進位 一個函數,它將給定數目的任何變量子類型轉換爲十六進位 |
Number Formatting Functions
數字格式化函數幫助開發人員以他們希望的格式表示給定的數字。
Sr.No | Function & Description |
---|---|
1 | 格式號 一個函數,它將返回一個格式爲數字的表達式 |
2 | 格式百分比 一個函數,它將返回一個格式爲百分比的表達式 |
Mathematical Functions
數學函數幫助我們計算給定輸入數的數學函數和三角函數。
Sr.No | Function & Description |
---|---|
1 | 內景 一個函數,返回給定數字的整數部分 |
2 | 修復 一個函數,返回給定數字的整數部分 |
3 | 原木 返回給定數的自然對數的函數。不允許使用負數 |
4 | 十月 返回給定百分比的八進位值的函數 |
5 | 十六進位 返回給定數字的十六進位值的函數 |
6 | Rnd公司 一個函數,它返回一個介於0和1之間的隨機數 |
7 | 我不知道。我不知道。 一個函數,它返回一個與指定數字的符號相對應的數字 |
8 | 平方米 返回給定數的平方根的函數。不允許使用負數 |
9 | 腹肌 一個函數,它返回給定數的絕對值 |
10 | 經驗 一個函數,它將e的值提升到指定的數字 |
11 | 罪惡 返回給定數值的正弦值的函數 |
12 | Cos公司 返回給定數字餘弦值的函數 |
13 | 棕褐色 一個函數,它返回給定數的tan值 |
VBScript - Strings
字符串是一個字符序列,可以由字母、數字、特殊字符或全部字符組成。如果變量被括在雙引號「」中,則該變量稱爲字符串。
Syntax
variablename = "string"
Examples
str1 = "string" ' Only Alphabets str2 = "132.45" ' Only Numbers str3 = "!@#$;*" ' Only Special Characters Str4 = "Asc23@#" ' Has all the above
String Functions
有預定義的VBScript字符串函數,可以幫助開發人員非常有效地使用字符串。下面是VBScript中支持的字符串方法。請點擊每一個方法詳細了解。
Function Name | Description |
---|---|
InStr | Returns the first occurrence of the specified substring. Search happens from left to right. |
InstrRev | Returns the first occurrence of the specified substring. Search happens from Right to Left. |
Lcase | Returns the lower case of the specified string. |
Ucase | Returns the Upper case of the specified string. |
Left | Returns a specific number of characters from the left side of the string. |
Right | Returns a specific number of characters from the Right side of the string. |
Mid | Returns a specific number of characters from a string based on the specified parameters. |
Ltrim | Returns a string after removing the spaces on the left side of the specified string. |
Rtrim | Returns a string after removing the spaces on the right side of the specified string. |
Trim | Returns a string value after removing both leading and trailing blank spaces. |
Len | Returns the length of the given string. |
Replace | Returns a string after replacing a string with another string. |
Space | Fills a string with the specified number of spaces. |
StrComp | Returns an integer value after comparing the two specified strings. |
String | Returns a String with a specified character the specified number of times. |
StrReverse | Returns a String after reversing the sequece of the characters of the given string. |
VBScript - Arrays
What is an Array?
我們非常清楚變量是存儲值的容器。有時,開發人員可以一次在單個變量中保存多個值。當一系列值存儲在單個變量中時,它稱爲數組變量。
Array Declaration
數組的聲明方式與變量的聲明方式相同,只是數組變量的聲明使用括號。在下面的示例中,括號中提到了數組的大小。
'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,但它可以保留6個值,因爲數組索引從零開始。
數組索引不能爲負。
VBScript數組可以在數組中存儲任何類型的變量。因此,數組可以在單個數組變量中存儲整數、字符串或字符。
Assigning Values to an Array
通過對每個要分配的值指定數組索引值,將這些值分配給數組。它可以是一根繩子。
Example
<!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
Multi Dimension Arrays
數組不僅限於一維,而且最多可以有60維。二維數組是最常用的數組。
Example
在下面的示例中,多維數組聲明爲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 Statement
ReDim語句用於聲明動態數組變量並分配或重新分配存儲空間。
ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
Preserve−一個可選參數,用於在更改最後一個維度的大小時保留現有數組中的數據。
varname−一個必需的參數,表示變量的名稱,它應該遵循標準的變量命名約定。
下標−一個必需的參數,指示數組的大小。
Example
在下面的示例中,已重新定義數組,然後在更改數組的現有大小時保留值。
注意−調整比原來小的數組的大小時,刪除的元素中的數據將丟失。
<!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
Array Methods
VBScript中有多種內置函數,可以幫助開發人員有效地處理數組。下面列出了與數組結合使用的所有方法。請單擊方法名稱以了解詳細信息。
Function | Description |
---|---|
LBound | A Function, which returns an integer that corresponds to the smallest subscript of the given arrays. |
UBound | A Function, which returns an integer that corresponds to the Largest subscript of the given arrays. |
Split | A Function, which returns an array that contains a specified number of values. Splitted based on a Delimiter. |
Join | A Function, which returns a String that contains a specified number of substrings in an array. This is an exact opposite function of Split Method. |
Filter | A Function, which returns a zero based array that contains a subset of a string array based on a specific filter criteria. |
IsArray | A Function, which returns a boolean value that indicates whether or not the input variable is an array. |
Erase | A Function, which recovers the allocated memory for the array variables. |
VBScript - Date and Time Functions
VBScript日期和時間函數幫助開發人員將日期和時間從一種格式轉換爲另一種格式,或者以適合特定條件的格式表示日期或時間值。
Date Functions
Function | Description |
---|---|
Date | A Function, which returns the current system date |
CDate | A Function, which converts a given input to Date |
DateAdd | A Function, which returns a date to which a specified time interval has been added |
DateDiff | A Function, which returns the difference between two time period |
DatePart | A Function, which returns a specified part of the given input date value |
DateSerial | A Function, which returns a valid date for the given year,month and date |
FormatDateTime | A Function, which formats the date based on the supplied parameters |
IsDate | A Function, which returns a Boolean Value whether or not the supplied parameter is a date |
Day | A Function, which returns an integer between 1 and 31 that represents the day of the specified Date |
Month | A Function, which returns an integer between 1 and 12 that represents the month of the specified Date |
Year | A Function, which returns an integer that represents the year of the specified Date |
MonthName | A Function, which returns Name of the particular month for the specified date |
WeekDay | A Function, which returns an integer(1 to 7) that represents the day of the week for the specified day. |
WeekDayName | A Function, which returns the weekday name for the specified day. |
Time Functions
Function | Description |
---|---|
Now | A Function, which returns the current system date and Time |
Hour | A Function, which returns and integer between 0 and 23 that represents the Hour part of the the given time |
Minute | A Function, which returns and integer between 0 and 59 that represents the Minutes part of the the given time |
Second | A Function, which returns and integer between 0 and 59 that represents the Seconds part of the the given time |
Time | A Function, which returns the current system time |
Timer | A Function, which returns the number of seconds and milliseconds since 12:00 AM |
TimeSerial | A Function, which returns the time for the specific input of hour,minute and second |
TimeValue | A Function, which converts the input string to a time format |
VBScript - Procedures
What is a Function?
函數是一組可重用的代碼,可以在程序的任何地方調用。這樣就不需要一遍又一遍地編寫相同的代碼。這將使程式設計師能夠將一個大程序劃分爲許多小的和可管理的函數。除了內置函數外,VBScript還允許我們編寫用戶定義的函數。本節將解釋如何用VBScript編寫自己的函數。
Function Definition
在使用函數之前,我們需要定義那個特定的函數。在VBScript中定義函數的最常用方法是使用function關鍵字,後跟一個唯一的函數名,它可以或不可以帶有參數列表和一個帶有End function關鍵字的語句,該關鍵字指示函數的結束。
基本語法如下所示−
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function Functionname(parameter-list) statement 1 statement 2 statement 3 ....... statement n End Function </script> </body> </html>
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function sayHello() msgbox("Hello there") End Function </script> </body> </html>
Calling a Function
要在腳本中稍後的某個地方調用函數,只需使用Call關鍵字編寫該函數的名稱。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function sayHello() msgbox("Hello there") End Function Call sayHello() </script> </body> </html>
Function Parameters
到目前爲止,我們已經看到了不帶參數的函數,但是有一個工具可以在調用函數時傳遞不同的參數。這些傳遞的參數可以在函數內部捕獲,並且可以對這些參數執行任何操作。使用Call關鍵字調用函數。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function sayHello(name, age) msgbox( name & " is " & age & " years old.") End Function Call sayHello("Tutorials point", 7) </script> </body> </html>
Returning a Value from a Function
VBScript函數可以有一個可選的返回語句。如果要從函數返回值,則必須執行此操作。例如,您可以在函數中傳遞兩個數字,然後您可以期望函數在調用程序中返回它們的乘法。
注意−函數可以返回多個以逗號分隔的值,作爲分配給函數名本身的數組。
Example
此函數接受兩個參數並將它們連接起來,然後在調用程序中返回結果。在VBScript中,值是使用函數名從函數返回的。如果要返回兩個或多個值,則函數名將與值數組一起返回。在調用程序中,結果存儲在result變量中。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function concatenate(first, last) Dim full full = first & last concatenate = full 'Returning the result to the function name itself End Function </script> </body> </html>
現在,我們可以如下調用這個函數&負;
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Function concatenate(first, last) Dim full full = first & last concatenate = full 'Returning the result to the function name itself End Function ' Here is the usage of returning value from function. dim result result = concatenate("Zara", "Ali") msgbox(result) </script> </body> </html>
Sub Procedures
子過程類似於函數,但幾乎沒有區別。
子過程不返回值,而函數可能返回值,也可能不返回值。
調用子過程時可以不使用call關鍵字。
子過程總是包含在Sub和End Sub語句中。
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Sub sayHello() msgbox("Hello there") End Sub </script> </body> </html>
Calling Procedures
要在腳本中稍後的某個地方調用過程,您只需編寫帶有或不帶有Call關鍵字的過程的名稱。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Sub sayHello() msgbox("Hello there") End Sub sayHello() </script> </body> </html>
Advanced Concepts for Functions
關於VBScript函數有很多需要學習的地方。我們可以傳遞參數byvalue或byreference。請點擊每一個了解更多。
ByVal-按值傳遞參數
byref-通過引用傳遞參數
VBScript - Dialog Boxes
What is a Dialog Box ?
VBScript允許開發人員有效地與用戶交互。它可以是向用戶顯示消息的消息框,也可以是用戶可以輸入值的輸入框。
VBScript MsgBox Function
MsgBox函數顯示一個消息框,等待用戶單擊按鈕,然後根據用戶單擊的按鈕執行操作。
Syntax
MsgBox(prompt[,buttons][,title][,helpfile,context])
Parameter Description
提示−一個必需的參數。在對話框中顯示爲消息的字符串。提示的最大長度約爲1024個字符。如果消息擴展到多行,那麼我們可以在每行之間使用回車符(Chr(13))或換行符(Chr(10))分隔行。
按鈕−可選參數。一種數值表達式,指定要顯示的按鈕類型、要使用的圖標樣式、默認按鈕的標識和消息框的模式。如果留空,則按鈕的默認值爲0。
Title−可選參數。顯示在對話框標題欄中的字符串表達式。如果標題爲空,則應用程式名稱將放置在標題欄中。
幫助文件−一個可選參數。一個字符串表達式,標識用於爲對話框提供上下文相關幫助的幫助文件。
context−可選參數。一個數字表達式,用於標識幫助作者分配給相應幫助主題的幫助上下文編號。如果提供了上下文,則還必須提供幫助文件。
按鈕參數可以採用以下值中的任何一個−
0 vbOKOnly僅顯示「確定」按鈕。
1 vbOKCancel顯示「確定」和「取消」按鈕。
2 vbAbortRetryIgnore顯示「中止」、「重試」和「忽略」按鈕。
3 vbYesNoCancel顯示是、否和取消按鈕。
4 vbYesNo顯示是和否按鈕。
5 vbRetryCancel顯示重試和取消按鈕。
16 vbCritical顯示關鍵消息圖標。
32 vbQuestion顯示警告查詢圖標。
48 VB感嘆號顯示警告消息圖標。
顯示信息消息
0 vbDefaultButton1第一個按鈕爲默認值。
256 vbDefaultButton2秒按鈕爲默認值。
512 vbDefaultButton3第三個按鈕爲默認值。
768 vbDefaultButton4第四個按鈕爲默認值。
0 vbapplicationmodel應用程式模式。在用戶響應消息框之前,當前應用程式將無法工作。
4096 VBSystemModer系統模式。除非用戶對消息框做出響應,否則所有應用程式都將無法工作。
上述值邏輯上分爲四組:第一組(0到5)指示要在消息框中顯示的按鈕。第二組(16、32、48、64)描述要顯示的圖標的符號,第三組(0、256、512、768)指示哪個按鈕必須是默認按鈕,第四組(0、4096)確定消息框的模式。
Return Values
MsgBox函數可以返回以下值之一−
1-單擊了vbOK-OK
2-單擊了vbCancel-Cancel
3-單擊了vbAbort-Abort
4-單擊了vbRetry-Retry
5-單擊了vbIgnore-Ignore
6-單擊了vbYes-Yes
7-單擊了vbNo-No
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> 'Message Box with just prompt message MsgBox("Welcome") 'Message Box with title, yes no and cancel Butttons a = MsgBox("Do you like blue color?",3,"Choose options") ' Assume that you press No Button document.write("The Value of a is " & a) </script> </body> </html>
執行上述腳本時,將顯示消息框,如果按「否」按鈕,則a的值爲7。
The Value of a is 7
VBScript InputBox Function
InputBox函數幫助用戶從用戶獲取值。輸入值後,如果用戶單擊「確定」按鈕或按鍵盤上的「回車」鍵,則InputBox函數將返回文本框中的文本。如果用戶單擊Cancel按鈕,函數將返回一個空字符串(「」)。
Syntax
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
Parameter Description
提示−一個必需的參數。在對話框中顯示爲消息的字符串。提示的最大長度約爲1024個字符。如果消息擴展到多行,那麼我們可以在每行之間使用回車符(Chr(13))或換行符(Chr(10))分隔行。
Title−可選參數。顯示在對話框標題欄中的字符串表達式。如果標題爲空,則應用程式名稱將放置在標題欄中。
默認值−可選參數。文本框中用戶希望顯示的默認文本。
XPos−可選參數。X軸的位置,表示從螢幕左側水平的提示距離。如果留空,則輸入框水平居中。
YPos−一個可選參數。Y軸的位置,表示垂直於螢幕左側的提示距離。如果留空,則輸入框垂直居中。
幫助文件−一個可選參數。一個字符串表達式,標識用於爲對話框提供上下文相關幫助的幫助文件。
context−可選參數。一個數字表達式,用於標識幫助作者分配給相應幫助主題的幫助上下文編號。如果提供了上下文,則還必須提供幫助文件。
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> ' Input Box with only Prompt InputBox("Enter a number") ' Input Box with a Title a = InputBox("Enter a Number","Enter Value") msgbox a ' Input Box with a Prompt,Title and Default value a = InputBox("Enter a Number","Enter Value",123) msgbox a ' Input Box with a Prompt,Title,Default and XPos a = InputBox("Enter your name","Enter Value",123,700) msgbox a ' Input Box with a Prompt,Title and Default and YPos a = InputBox("Enter your name","Enter Value",123,,500) msgbox a </script> </body> </html>
執行上述腳本時,將顯示輸入框並顯示用戶輸入的值。
Object Oriented VBScript
What is an Object
VBScript運行時對象幫助我們完成各種任務。本節將幫助您了解如何實例化對象並使用它。
Syntax
爲了無縫地處理對象,我們需要聲明對象並使用Set關鍵字實例化它。
Dim objectname 'Declare the object name Set objectname = CreateObject(object_type)
Example
在下面的示例中,我們正在創建一個Scripting.Dictionary類型的對象。
Dim obj Set obj = CreateObject("Scripting.Dictionary")
Destroying the Objects
銷毀對象的意義在於釋放內存並重置對象變量。
Syntax
爲了銷毀對象,我們需要使用Set關鍵字後跟對象名,並將其指向Nothing。
Set objectname = Nothing 'Destroy the object.
Example
在下面的示例中,我們正在創建一個Scripting.Dictionary類型的對象。
Dim obj Set obj = CreateObject("Scripting.Dictionary") Set obj = Nothing.
Object Usage
請單擊每個給定的對象類型以了解更多信息。
Object Type | Description |
---|---|
Class | Class is a container, which holds methods and variables associated with it and accessed by creating an object of Type Class. |
Scripting.FileSystemObject | It is the group of objects with which we can work with file system. |
Scripting.Dictionary | A Group of objects, which are used for creating the dictionary objects. |
Debug | A Global Object with which we can send output to the Microsoft script debugger. |
VBScript - Regular Expressions
正則表達式是形成模式的字符序列,主要用於搜索和替換。創建模式的目的是匹配特定的字符串,以便開發人員可以根據條件提取字符並替換某些字符。
RegExp Object
RegExp對象幫助開發人員匹配字符串的模式,屬性和方法幫助我們輕鬆地使用正則表達式。它類似於JavaScript中的RegExp
Properties
Pattern−Pattern方法表示用於定義正則表達式的字符串,應在使用正則表達式對象之前對其進行設置。
IgnoreCase−一個布爾屬性,表示是否應針對字符串中的所有可能匹配項(如果爲true或false)測試正則表達式。如果未顯式指定,則IgnoreCase值設置爲False。
Global−一個布爾屬性,表示是否應針對字符串中的所有可能匹配項測試正則表達式。如果未顯式指定,則將全局值設置爲False。
Methods
Test(search string)−如果正則表達式能夠成功地與字符串匹配,則測試方法以字符串作爲參數並返回True,否則返回False。
Replace(search string,Replace string)−Replace方法接受2個參數。如果搜索成功,它將用替換字符串替換該匹配項,並返回新字符串。如果沒有匹配項,則返回原始搜索字符串。
Execute(搜索字符串)−Execute方法的工作方式與Replace類似,只是它返回一個Matches集合對象,其中包含每個成功匹配的Match對象。它不會修改原始字符串。
Matches Collection Object
Matches集合對象作爲Execute方法的結果返回。此集合對象可以包含零個或多個匹配對象,並且此對象的屬性是只讀的。
Count−Count方法表示集合中匹配對象的數目。
Item方法允許從matches collections對象訪問match對象。
Match Object
Match對象包含在matches集合對象中。這些對象表示搜索字符串後的成功匹配。
FirstIndex−它表示原始字符串中發生匹配的位置。此索引是基於零的,這意味著字符串中的第一個位置是0。
長度−表示匹配字符串總長度的值。
值−表示匹配值或文本的值。它也是訪問匹配對象時的默認值。
All about Pattern Parameter
模式構建與PERL類似。在使用正則表達式時,模式構建是最重要的。在本節中,我們將討論如何基於各種因素創建模式。
Position Matching
位置匹配的意義在於確保正則表達式放置在正確的位置。
Symbol | Description |
---|---|
^ | Matches only the beginning of a string. |
$ | Match only the end of a string. |
\b | Matches any word boundary |
\B | Matches any non-word boundary |
Literals Matching
任何形式的字符,如字母表、數字或特殊字符,甚至十進位、十六進位都可以視爲文字。由於很少有字符在正則表達式的上下文中具有特殊意義,我們需要使用轉義序列對其進行轉義。
Symbol | Description |
---|---|
Alphanumeric | Matches alphabetical and numerical characters only. |
\n | Matches a new line. |
\[ | Matches [ literal only |
\] | Matches ] literal only |
\( | Matches ( literal only |
\) | Matches ) literal only |
\t | Matches horizontal tab |
\v | Matches vertical tab |
\| | Matches | literal only |
\{ | Matches { literal only |
\} | Matches } literal only |
\\ | Matches \ literal only |
\? | Matches ? literal only |
\* | Matches * literal only |
\+ | Matches + literal only |
\. | Matches . literal only |
\b | Matches any word boundary |
\B | Matches any non-word boundary |
\f | Matches a form feed |
\r | Matches carriage return |
\xxx | Matches the ASCII character of an octal number xxx. |
\xdd | Matches the ASCII character of an hexadecimal number dd. |
\uxxxx | Matches the ASCII character of an UNICODE literal xxxx. |
Character Classes Matching
字符類是由自定義分組形成的模式,包含在[]大括號中。如果我們期望一個不應該在列表中的字符類,那麼我們應該使用負號忽略這個特定的字符類,這是一個大寫^。
Symbol | Description |
---|---|
[xyz] | Match any of the character class enclosed within the character set. |
[^xyz] | Matches any of the character class that are NOT enclosed within the character set. |
. | Matches any character class except \n |
\w | Match any word character class. Equivalent to [a-zA-Z_0-9] |
\W | Match any non-word character class. Equivalent to [^a-zA-Z_0-9] |
\d | Match any digit class. Equivalent to [0-9]. |
\D | Match any non-digit character class. Equivalent to [^0-9]. |
\s | Match any space character class. Equivalent to [ \t\r\n\v\f] |
\S | Match any space character class. Equivalent to [^\t\r\n\v\f] |
Repetition Matching
重複匹配允許在正則表達式中進行多個搜索。它還指定元素在正則表達式中重複的次數。
Symbol | Description |
---|---|
* | Matches zero or more occurrences of the given regular Expression. Equivalent to {0,}. |
+ | Matches one or more occurrences of the given regular Expression. Equivalent to {1,}. |
? | Matches zero or one occurrences of the given regular Expression. Equivalent to {0,1}. |
{x} | Matches exactly x number of occurrences of the given regular expression. |
{x,} | Match atleast x or more occurrences of the given regular expression. |
{x,y} | Matches x to y number of occurences of the given regular expression. |
Alternation & Grouping
交替和分組有助於開發人員創建更複雜的正則表達式,特別是在正則表達式中處理複雜的子句,這給了很大的靈活性和控制能力。
Symbol | Description |
---|---|
0 | Grouping a clause to create a clause. "(xy)?(z)" matches "xyz" or "z". |
| | Alternation combines one regular expression clause and then matches any of the individual clauses. "(ij)|(23)|(pq)" matches "ij" or "23" or "pq". |
Building Regular Expressions
下面給出幾個示例,它們清楚地解釋了如何構建正則表達式。
Regular Expression | Description |
---|---|
"^\s*.." and "..\s*$" | Represents that there can be any number of leading and trailing space characters in a single line. |
"((\$\s?)|(#\s?))?" | Represents an optional $ or # sign followed by an optional space. |
"((\d+(\.(\d\d)?)?))" | Represents that at least one digit is present followed by an optional decimals and two digits after decimals. |
Example
下面的示例檢查用戶是否輸入了一個電子郵件id,其格式應匹配,以便有一個電子郵件id後跟「@」,然後後跟域名。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> strid = "welcome.user@tutorialspoint.co.us" Set re = New RegExp With re .Pattern = "^[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}$" .IgnoreCase = False .Global = False End With ' Test method returns TRUE if a match is found If re.Test( strid ) Then Document.write(strid & " is a valid e-mail address") Else Document.write(strid & " is NOT a valid e-mail address") End If Set re = Nothing </script> </body> </html>
VBScript - 錯誤 Handling
編程中有三種類型的錯誤:(a)語法錯誤,(b)運行時錯誤,和(c)邏輯錯誤。
Syntax errors
語法錯誤,也稱爲解析錯誤,發生在VBScript的解釋時。例如,以下行由於缺少右括號而導致語法錯誤−
<script type = "text/vbscript"> dim x,y x = "Tutorialspoint" y = Ucase(x </script>
Runtime errors
運行時錯誤,也稱爲異常,發生在執行期間,解釋之後。例如,下面的一行導致運行時錯誤,因爲這裡的語法是正確的,但是在運行時它試圖調用fnmply,這是一個不存在的函數−
<script type = "text/vbscript"> Dim x,y x = 10 y = 20 z = fnadd(x,y) a = fnmultiply(x,y) Function fnadd(x,y) fnadd = x+y End Function </script>
Logical errors
邏輯錯誤可能是最難追蹤的錯誤類型。這些錯誤不是語法或運行時錯誤的結果。相反,當你在驅動腳本的邏輯中犯了錯誤,卻沒有得到預期的結果時,它們就會發生。您無法捕獲這些錯誤,因爲這取決於您的業務需求您希望在程序中放入何種類型的邏輯。例如,將一個數字除以零,或編寫進入無限循環的腳本。
Err Object
如果我們有一個運行時錯誤,那麼通過顯示錯誤消息來停止執行。作爲開發人員,如果要捕獲錯誤,則使用error對象。
Example
在下面的示例中,錯誤號給出錯誤號,錯誤描述給出錯誤描述。
<script type = "text/vbscript"> Err.Raise 6 ' Raise an overflow error. MsgBox "錯誤 # " & CStr(Err.Number) & " " & Err.Description Err.Clear ' Clear the error. </script>
VBScript Miscellaneous Statements
VBScript還有一些其他重要的語句來幫助開發人員開發高效的腳本。下表列出了一組這樣重要的語句。在本章中,我們將通過示例詳細討論每一個語句。
Category | Function Name/Statement Name |
---|---|
Options | Option Explicit |
Script Engine ID | ScriptEngine |
variants | IsArray, IsEmpty, IsNull, IsNumeric, IsObject, TypeName |
Expression | Eval,Execute |
Control Statement | With...End With |
Math Function | Randomize |
Option Explicit
Option Explicit強制開發人員在變量用於代碼的某些部分之前使用Dim語句聲明變量。
Syntax
Option Explicit
Example
如果我們使用選項Explicit並且如果我們不聲明變量,那麼解釋器將拋出並出錯。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Option Explicit Dim x,y,z,a x = 10 y = 20 z = fnadd(x,y) a = fnmultiply(x,y) Function fnadd(x,y) fnadd = x+y End Function </script> </body> </html>
ScriptEngine
ScriptEngine表示正在使用的腳本語言的詳細信息。它還與ScriptEngineMajorVersion、ScriptEngineMinor Version、ScriptEngineBuildVersion結合使用,後者分別給出vbscript引擎的主版本、vbscript引擎的次版本和vbscript的生成版本。
Syntax
ScriptEngine
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim scriptdetails scriptdetails = " Version " & ScriptEngine & " - " 'For getting Major version, use ScriptEngineMajorVersion' scriptdetails = scriptdetails & ScriptEngineMajorVersion & "." 'For getting Minor version, use ScriptEngineMinorVersion' scriptdetails = scriptdetails & ScriptEngineMinorVersion & "." 'For getting Build version, use ScriptEngineBuildVersion' scriptdetails = scriptdetails & ScriptEngineBuildVersion Document.write scriptdetails </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
Version VBScript - 5.8.16996
IsEmpty
函數IsEmpty用於檢查表達式是否爲空。它返回一個布爾值。如果變量未初始化或顯式設置爲空,則is Empty返回True。否則,表達式返回False。
Syntax
IsEmpty(expression)
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim var, MyCheck MyCheck = IsEmpty(var) Document.write "Line 1 : " & MyCheck & "<br />" var = Null ' Assign Null. MyCheck = IsEmpty(var) Document.write "Line 2 : " & MyCheck & "<br />" var = Empty ' Assign Empty. MyCheck = IsEmpty(var) Document.write "Line 3 : " & MyCheck & "<br />" </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
Line 1 : True Line 2 : False Line 3 : True
IsNull
函數IsNull用於檢查表達式是否具有有效數據。它返回一個布爾值。如果變量爲空,則is Null返回True,否則表達式返回False。
Syntax
IsNull(expression)
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim var, res res = IsNull(var) document.write "Line 1 : " & res & "<br />" var = Null res = IsNull(var) document.write "Line 2 : " & res & "<br />" var = Empty res = IsNull(var) document.write "Line 3 : " & res & "<br />" </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
Line 1 : False Line 2 : True Line 3 : False
IsObject
IsObject函數用於檢查表達式是否具有有效的對象。它返回一個布爾值。如果表達式包含對象子類型,則IsObject返回True,否則表達式返回False。
Syntax
IsObject(expression)
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim fso,b b = 10 set fso = createobject("Scripting.Filesystemobject") x = isobject(fso) Document.write "Line 1 : " & x & "<br />" y = isobject(b) Document.write "Line 2 : " & y & "<br />" </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
Line 1 : True Line 2 : False
IsNumeric
IsNumeric函數用於檢查表達式是否具有數字子類型。它返回一個布爾值。如果表達式包含數字子類型,則IsObject返回True,否則表達式返回False。
Syntax
IsNumeric(expression)
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim var, chk var = 20 chk = IsNumeric(var) Document.write "Line 1 : " & chk & "<br />" var = "3.1415935745" chk = IsNumeric(var) Document.write "Line 2 : " & chk & "<br / >" var = "20 Chapter 23.123 VBScript" chk = IsNumeric(var) Document.write "Line 3 : " & chk & "<br / >" </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
Line 1 : True Line 2 : True Line 3 : False
TypeName
TypeName函數用於返回變量的變量子類型信息。
Syntax
TypeName(varname)
Typename函數可以返回以下任何值。
字節值
整型值
長整型值
單精度浮點值
雙精度浮點值
貨幣價值
十進位值
日期或時間值
字符串值
布爾值
空的未初始化值
無有效數據
對象的類型名
沒有尚未引用對象實例的對象變量
錯誤
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim ArrVar(2), vartype NullVar = Null ' Assign Null value. vartype = TypeName(3.1450) Document.write "Line 1 : " & vartype & "<br />" vartype = TypeName(432) Document.write "Line 2 : " & vartype & "<br />" vartype = TypeName("Microsoft") Document.write "Line 3 : " & vartype & "<br />" vartype = TypeName(NullVar) Document.write "Line 4 : " & vartype & "< br />" vartype = TypeName(ArrVar) Document.write "Line 5 : " & vartype & "<br />" </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
Line 1 : Double Line 2 : Integer Line 3 : String Line 4 : Null Line 5 : Variant()
Eval
Eval函數執行表達式並以字符串或數字形式返回結果。
Syntax
Eval(expression)
參數表達式可以是字符串表達式或數字。如果向Eval函數傳遞一個不包含數值表達式或函數名但僅包含簡單文本字符串的字符串,則會發生運行時錯誤。例如,Eval(「VBScript」)會導致錯誤。
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Document.write Eval("10 + 10") & "<br />" Document.write Eval("101 = 200") & "<br />" Document.write Eval("5 * 3") & "<br />" </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
20 false 15
Execute
Execute語句接受參數,該參數是一個字符串表達式,包含一個或多個要執行的語句。
Syntax
Execute(expression)
在VBScript中,a=b可以通過兩種方式解釋。它可以被視爲一個賦值語句,其中x的值被賦值給y。它也可以被解釋爲一個表達式,用於測試a和b是否具有相同的值。如果是,結果是真的;如果不是,結果是假的。Execute語句總是使用第一個解釋,Eval語句總是使用第二個解釋。
Example
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim x x = "Global" y = "VBScript" Execute("x = y") msgbox x msgbox y </script> </body> </html>
在IE中執行腳本時,以.html擴展名保存文件,螢幕上將顯示以下結果。
VBScript VBScript
With..End With
With語句允許我們對指定的對象執行一系列操作,而不必一遍又一遍地顯式地提到對象名。
Syntax
With (objectname) statement 1 statement 2 statement 3 ... ... statement n End With
Example
執行以下腳本時,將打開Winword並輸入指定的文本。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Msg = "Vbscript" & vbCrLf & "Programming" Set objWord = CreateObject("Word.Application") objWord.Visible = True ' Objects methods are accessed without requaliyfying the objects again.' With objWord .Documents.Add .Selection.TypeText Msg .Selection.WholeStory End With </script> </body> </html>
Randomize
Randomize語句初始化隨機數生成器,這有助於開發人員生成隨機數。
Syntax
Randomize [number]
Example
執行以下腳本時,將打開Winword並輸入指定的文本。
<!DOCTYPE html> <html> <body> <script language = "vbscript" type = "text/vbscript"> Dim MyValue Randomize MyValue = Int((100 * Rnd) + 1) ' Generate random value between 1 and 100. MsgBox MyValue </script> </body> </html>
將上述腳本保存爲HTML,在IE中執行腳本時,將顯示以下輸出。