VBScript 提供兩大內建對話函式:MsgBox(訊息輸出)與 InputBox(輸入收集),讓伺服器端腳本(或 HTA/客戶端 VBScript)能以視窗方式與使用者互動。
變數 = MsgBox(提示訊息 [, 按鈕樣式 + 圖示 + 預設按鈕] [, 標題])
| 參數類別 | 常數值 | 常數名稱 | 說明 |
|---|---|---|---|
| 按鈕組合 | 0 | vbOKOnly | 僅 [確定](預設) |
| 1 | vbOKCancel | [確定] [取消] | |
| 2 | vbAbortRetryIgnore | [中止] [重試] [忽略] | |
| 3 | vbYesNoCancel | [是] [否] [取消] | |
| 4 | vbYesNo | [是] [否] | |
| 5 | vbRetryCancel | [重試] [取消] | |
| 圖示 | 16 | vbCritical | 停止圖示 (紅叉) |
| 32 | vbQuestion | 問號圖示 | |
| 48 | vbExclamation | 驚嘆號圖示 | |
| 64 | vbInformation | 資訊圖示 (藍 i) | |
| 預設按鈕 | 0 | vbDefaultButton1 | 第 1 個按鈕預設焦點 |
| 256 | vbDefaultButton2 | 第 2 個按鈕預設焦點 | |
| 512 | vbDefaultButton3 | 第 3 個按鈕預設焦點 |
組合方式:將上述三類常數值相加,如 vbYesNo + vbQuestion + vbDefaultButton2 = 4 + 32 + 256 = 292。
| 值 | 常數 | 按鈕 |
|---|---|---|
| 1 | vbOK | 確定 |
| 2 | vbCancel | 取消 |
| 3 | vbAbort | 中止 |
| 4 | vbRetry | 重試 |
| 5 | vbIgnore | 忽略 |
| 6 | vbYes | 是 |
| 7 | vbNo | 否 |
| 限制 | 說明 | 替代方案 |
|---|---|---|
| 僅支援 IE / HTA / WSH | 標準瀏覽器 (Chrome, Firefox, Edge) 不支援 VBScript 對話框 | 使用 JavaScript alert()/confirm()/prompt() 或 HTML 表單 |
| 伺服器端 ASP 無法直接使用 | ASP 在伺服器執行,無法彈出客戶端視窗 | ASP 輸出 HTML/JS 對話框,或導向輸入頁面 |
| 模態阻塞 | 對話框開啟時瀏覽器無法操作 | 非模態設計改用 DIV 模擬視窗 |
| 樣式無法自訂 | 標題列、按鈕、字型皆由系統決定 | 自訂 HTML/CSS Modal |
' ASP 頁面中模擬確認對話框
<%
If Request.Form("confirm") = "yes" Then
' 執行刪除等動作
Else
' 輸出確認頁面
%>
<script>
if (confirm("確定要刪除嗎?")) {
document.forms[0].confirm.value = "yes";
document.forms[0].submit();
} else {
history.back();
}
</script>
<form method="post">
<input type="hidden" name="confirm" value="no">
</form>
<% End If %>
理解 MsgBox/InputBox 的運作機制與限制,能幫助您在正確情境(HTA、WSH、IE 專案)善用它們,並在標準 Web 開發中選擇適當的替代方案。