BLOG
網站專欄 Q & A
網站技術

VBScript 是什麼?語法介紹、IE 退場後的現況與 JavaScript 替代方案

VBScript 是微軟以 Visual Basic 為基礎設計的腳本語言,1996 年隨 Internet Explorer 3 問世,曾經同時扮演三個角色:IE 網頁的客戶端腳本、Classic ASP 的伺服器端語言,以及 Windows 系統管理用的 .vbs 指令檔。今天沒有任何現代瀏覽器支援網頁裡的 VBScript,微軟也已宣布分階段從 Windows 移除它。這篇文章保留完整的基本語法範例供閱讀舊程式碼時對照,但把重點放在多數讀者真正需要的三件事:現況時程、與 JavaScript 的對照表,以及舊網站遇到 VBScript 該怎麼處理。本文屬於《網頁程式語言》系列,總覽請見〈網頁程式設計入門〉。

VBScript 語法示意圖:以 Visual Basic 為基礎、僅在 Internet Explorer 執行的網頁腳本語言

一、VBScript 是什麼?三種使用場景

VBScript(Visual Basic Scripting Edition)是微軟在 1996 年推出的直譯式腳本語言,語法沿用 Visual Basic,只能在微軟自家的執行環境中運行。它從來不是網頁標準,這一點決定了它後來的命運。實務上它出現在三個地方:

  • IE 的客戶端腳本:寫在 <script type="text/vbscript"> 裡,只有 Internet Explorer 看得懂,Netscape、Firefox、Chrome 從一開始就不支援。這是本文語法範例的情境。
  • Classic ASP 的伺服器端語言:ASP 網頁預設就是用 VBScript 寫的,在 IIS 伺服器上執行後輸出 HTML,所以和瀏覽器無關,至今仍能運作。這部分的語法與現況請看〈ASP 是什麼〉,本文不重複。
  • Windows 系統腳本(.vbs):透過 Windows Script Host 執行,早年大量用於登入腳本、批次作業與自動化,這也是微軟棄用計畫真正影響的部分。

二、現況先講:IE 退役與 VBScript 棄用時程

網頁裡的 VBScript 在 2022 年 6 月 15 日 IE 11 桌面版退役後就沒有任何一般瀏覽器能執行;Windows 內建的 VBScript 引擎則自 2024 年起分三階段淘汰。依微軟公告整理如下:

時間 事件 對網站與企業的意義
2022 年 6 月 15 日 IE 11 桌面應用程式退役,Windows 10 上的 IE 陸續被導向 Edge 一般使用者已無法用瀏覽器執行網頁中的 VBScript
2023 年 10 月 微軟將 VBScript 列入 Windows 的棄用(deprecated)功能清單 不再有新功能與改進,只有安全性修補
2024 年下半年起(Windows 11 24H2) 第一階段:VBScript 改為「隨選功能」,預設仍啟用 現有 .vbs 與依賴它的軟體照常運作,但已是倒數
約 2027 年(微軟預告) 第二階段:隨選功能預設不再啟用,需手動安裝 未遷移的內部工具會開始失效,IT 需人工介入
之後(未定) 第三階段:自 Windows 完全移除 VBScript 走入歷史
唯一的例外是 Edge 的 IE 模式:企業可透過 Edge 的 Internet Explorer 模式開啟依賴 VBScript 或 ActiveX 的內部舊系統,微軟表示這個模式至少支援到 2029 年。但它只適合封閉的內部應用,對公開網站沒有意義,訪客不會為了您的網站切換 IE 模式。

三、VBScript 基本語法範例

以下範例只能在 IE 或 Edge IE 模式執行,放在 Chrome、Firefox、Safari 會被當成看不懂的內容直接忽略,畫面不會有任何反應。保留這些範例的目的,是讓您在接手舊網站或舊系統時能看懂程式在做什麼。VBScript 有幾個和主流語言不同的特徵:不分大小寫、用單引號 ' 寫註解、字串串接用 &、區塊用 End IfNextEnd Sub 這類關鍵字收尾而不是大括號。

1. 基本結構與輸出

HTML + VBScript(僅 IE)
<script type="text/vbscript">
    MsgBox "Hello, VBScript!"
</script>

MsgBox 會跳出一個訊息框,相當於 JavaScript 的 alert()

2. 變數與資料型別

VBScript 只有一種資料型別 Variant,用 Dim 宣告變數即可,型別由存進去的值決定。

VBScript
Dim name, age
name = "王小明"
age = 30
MsgBox "姓名:" & name & vbCrLf & "年齡:" & age

vbCrLf 是內建的換行常數,訊息框會分兩行顯示姓名與年齡。

3. 條件判斷

VBScript
Dim age
age = 18
If age >= 18 Then
    MsgBox "您已成年"
Else
    MsgBox "您尚未成年"
End If

4. 迴圈

VBScript
Dim i
For i = 1 To 5
    MsgBox "這是第 " & i & " 次迴圈"
Next

會連續跳出五個訊息框。除了 For...Next,VBScript 還有 Do While...LoopFor Each...Next

5. 子程序與函數

Sub 是不回傳值的子程序,Function 會回傳值,回傳方式是把值指定給函數名稱本身,這是 Visual Basic 家族的特有寫法。

VBScript
' 定義子程序
Sub GreetUser(name)
    MsgBox "Hello, " & name
End Sub

' 呼叫子程序(呼叫 Sub 時參數不加括號)
GreetUser "Alice"

' 定義函數:把結果指定給函數名稱就是回傳
Function AddNumbers(a, b)
    AddNumbers = a + b
End Function

Dim total
total = AddNumbers(5, 10)
MsgBox "5 + 10 = " & total

6. DOM 操作

HTML + VBScript(僅 IE)
<p id="demo">這是一段文字。</p>
<script type="text/vbscript">
    Document.getElementById("demo").innerHTML = "這段文字已經被 VBScript 更改。"
</script>

DOM 的物件模型和 JavaScript 共用,差別只在語法外殼,所以這類程式改寫成 JavaScript 幾乎是逐行對照。

7. 表單驗證

HTML + VBScript(僅 IE)
<form name="myForm">
    姓名:<input type="text" name="name"><br>
    <input type="button" value="送出" onclick="ValidateForm()">
</form>
<script type="text/vbscript">
    Sub ValidateForm()
        If Document.myForm.name.value = "" Then
            MsgBox "姓名不能為空!"
        Else
            MsgBox "表單送出成功!"
        End If
    End Sub
</script>

這是舊網站最常見的 VBScript 用法:按下按鈕時檢查欄位。也正因為如此,很多改版前的舊站在 Chrome 裡「按送出沒反應」,原因就是驗證程式是 VBScript 寫的。

四、VBScript 與 JavaScript 語法對照表

把 VBScript 改寫成 JavaScript 時,九成的工作是機械式替換。下表是最常用的對照;JavaScript 各項語法的完整教學見〈JavaScript 語法介紹〉。

用途 VBScript JavaScript
宣告變數Dim namelet name;
訊息框MsgBox "Hi"alert("Hi");
字串串接a & ba + b 或樣板字串 `${a}${b}`
條件判斷If x > 1 Then ... Else ... End Ifif (x > 1) { ... } else { ... }
相等比較====(避免用 ==
不等於<>!==
迴圈For i = 1 To 5 ... Nextfor (let i = 1; i <= 5; i++) { ... }
子程序/函數SubFunction ... End Functionfunction name() { ... },用 return 回傳
註解' 註解// 註解
取得元素Document.getElementById("x")document.getElementById("x")(區分大小寫)
大小寫不區分嚴格區分,這是改寫時最常出錯的地方

五、舊網站還有 VBScript 怎麼辦?三種情況的處理

先判斷 VBScript 跑在哪裡,處理方式完全不同。

  • 情況一:跑在瀏覽器(客戶端腳本)。這部分已經在所有訪客的瀏覽器失效,不是「要不要改」而是「早就壞了」。依上一節的對照表改寫成 JavaScript 即可,表單驗證這類功能通常一兩個小時就能完成。
  • 情況二:跑在伺服器(Classic ASP)。IIS 至今仍能執行 ASP 頁面,網站對外看起來一切正常,不必急著重寫;但要面對主機必須是 Windows、微軟不再更新 ASP、懂 ASP 的人越來越少三個長期成本。遷移方向與評估要點見〈ASP 是什麼〉。
  • 情況三:公司內部的 .vbs 自動化腳本。這才是微軟棄用時程直接打到的對象。微軟建議的替代方案是 PowerShell,與網站無關,但建議 IT 在第二階段(預告約 2027 年)之前完成盤點。

六、我們檢查舊網站時怎麼找出 VBScript

網站改版前的技術盤點,我們會用三個訊號快速判斷舊站是否還埋著 VBScript:

  • 原始碼搜尋 text/vbscriptlanguage="vbscript"language="VBS";只要有一處,該頁在現代瀏覽器就有失效的功能。
  • 表單按鈕用 type="button" 搭配 onclick 呼叫一個找不到 JavaScript 定義的函數名稱(例如 ValidateForm()),八成是 VBScript 的 Sub。
  • 在 Chrome 開發者工具的 Console 沒有任何錯誤,但按鈕就是沒反應:JavaScript 出錯會報錯,VBScript 則是整段被靜默忽略,這種「安靜的失效」是最典型的症狀。

找到之後,客戶端部分一律改寫為 JavaScript;若同一站還有 .asp 頁面,則另外評估伺服器端的處置。

七、結論

VBScript 是一段已經結束的網頁技術史:它只活在 IE,IE 退役後網頁端的 VBScript 隨之失效,Windows 端也在微軟公告的時程中逐步移除。今天學它的價值只剩一個:看懂舊程式碼,然後把它改寫成 JavaScript。

如果您的網站是 2010 年以前建置、至今沒大改版,建議直接用第六節的方法檢查一次。網頁互動功能的正確起點是 JavaScript,它是所有瀏覽器共同支援的唯一腳本語言。

八、常見問答 FAQ

VBScript 是什麼?
VBScript(Visual Basic Scripting Edition)是微軟在 1996 年推出、以 Visual Basic 語法為基礎的直譯式腳本語言,只能在微軟的執行環境運作。它出現在三個地方:Internet Explorer 的網頁客戶端腳本、Classic ASP 的伺服器端程式,以及 Windows 系統管理用的 .vbs 指令檔。它不是網頁標準,Chrome、Firefox、Safari 從未支援,因此隨著 IE 退役,網頁中的 VBScript 已全面失效。
VBScript 現在還能用嗎?
分三種情況。網頁裡的 VBScript:不能,IE 11 桌面版已於 2022 年 6 月 15 日退役,沒有任何一般瀏覽器會執行,只有企業內部透過 Edge 的 IE 模式(微軟表示至少支援到 2029 年)還能開啟。Classic ASP 伺服器端的 VBScript:能,IIS 仍支援 ASP,網站對外正常運作。Windows 的 .vbs 腳本:暫時能,但微軟已於 2023 年 10 月將 VBScript 列為棄用功能,2024 年下半年起改為隨選功能,並預告約 2027 年起預設停用、最終自 Windows 移除,建議改用 PowerShell。
VBScript 和 JavaScript 有什麼不同?
兩者都是網頁時代的腳本語言,但命運相反。JavaScript 是 ECMAScript 標準,所有瀏覽器都支援,至今仍是網頁互動唯一的通用語言;VBScript 是微軟私有語言,只有 IE 支援。語法上 VBScript 沿用 Visual Basic:不分大小寫、用 Dim 宣告、用 & 串接字串、以 End If、Next 這類關鍵字收尾、用單引號寫註解;JavaScript 則用大括號與分號,且嚴格區分大小寫。兩者操作的 DOM 物件模型相同,所以把 VBScript 改寫成 JavaScript 多半是逐行替換,本文第四節有對照表。
VBScript 和 VBA、Visual Basic 一樣嗎?
不一樣,但屬於同一家族。Visual Basic(VB6)是完整的程式語言與開發工具,可編譯成 Windows 執行檔;VBA(Visual Basic for Applications)是內嵌在 Office 裡的版本,用來寫 Excel 巨集等自動化;VBScript 則是精簡的直譯腳本版,沒有型別宣告、功能較少,用於 IE、ASP 與 Windows 腳本。三者語法相近、可以互相看懂,但執行環境完全不同,程式不能直接互通。現在的 VB.NET 是 .NET 平台上的語言,與 VBScript 的差距更大。
網頁裡的 VBScript 該改成什麼?
改成 JavaScript,這是唯一選項。客戶端 VBScript 最常見的用途是表單驗證、訊息框與簡單的 DOM 操作,對照關係很直接:MsgBox 改 alert,Dim 改 let,If…Then…End If 改 if 加大括號,For…Next 改 for 迴圈,Sub 與 Function 改 function 並用 return 回傳。最容易出錯的是大小寫:VBScript 不區分,JavaScript 嚴格區分,Document.getElementById 要改成小寫開頭的 document。若是 Classic ASP 伺服器端的 VBScript,則不必急著改,但要規劃長期遷移到 ASP.NET Core 或 PHP。

參考來源

  1. Microsoft Learn,〈Deprecated features for Windows client〉,Microsoft 官方文件。
  2. Microsoft Windows IT Pro Blog,〈VBScript deprecation: Timelines and next steps〉,Microsoft,2024。
  3. Microsoft Learn,〈Internet Explorer 11 desktop app retirement FAQ〉,Microsoft 官方文件。
  4. Microsoft Learn,〈VBScript Language Reference〉,Microsoft 官方文件。
  5. 新視野網頁設計,〈JavaScript 語法介紹:初學者也能看懂的完整入門教學〉,本站自有內容。

棄用時程依微軟 2024 年公告整理,第二、三階段的實際時間以微軟後續公告為準;第六節為本站網站改版前技術盤點的實務做法。

關於作者

內容揭露:本文由新視野網頁設計 SEO 團隊撰寫。文中連結的站內指南與延伸閱讀均為本站自有內容;新視野提供網頁設計與 SEO/AI SEO 服務,讀者在採用本文建議前請自行評估是否符合自身情況。文中引用的第三方研究與官方文件皆附可點擊出處,歡迎查證。

新視野網頁設計 SEO 團隊

新視野網頁設計自 2005 年起投入企業網站建置與搜尋行銷,服務範圍涵蓋 RWD 網站設計、技術 SEO、結構化資料佈署,以及 AI 搜尋時代的 AEO/GEO 內容優化。本文由新視野 SEO 團隊撰寫、審閱並持續維護更新。

服務據點:
台中(總公司)台中市南區忠明南路 758 號 21 樓 B4台北高雄
聯絡電話:
04-2260-1329
公司資訊:
關於我們公司位置線上詢價
對外平台:
FacebookLinkedIn
本站同主題內容:
JavaScript 語法介紹ASP 是什麼網頁程式設計入門HTML 是什麼

歡迎推廣本文,請務必連結(LINK)本文出處:新視野網頁設計公司