ASP.NET 本身不直接支援彈出視窗,必須透過 JavaScript (alert、confirm、window.open) 實現。本文詳細說明客戶端腳本註冊方式、Response.Write 與 RegisterClientScriptBlock/RegisterStartupScript 差異、以及實戰模式。
window.alert(message):單純提示,只有「確定」按鈕。window.confirm(message):回傳 Boolean,提供「確定/取消」供邏輯判斷。window.open(url, name, features):開啟新視窗,可載入完整頁面。| 方法 | 輸出位置 | 適用情境 |
|---|---|---|
| Response.Write | HTML 最開頭 ( 前) | 簡單測試、不需操作 DOM 元素 |
| RegisterClientScriptBlock | 腳本需儘早執行、不依賴頁面元素 | |
| RegisterStartupScript | 腳本需操作頁面元素(如 focus、驗證) |
Private Sub btAlert_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btAlert.Click
Response.Write("")
End Sub
Private Sub btConfirm_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btConfirm.Click
If Not IsClientScriptBlockRegistered("clientScript") Then
Dim strScript As String = ""
RegisterClientScriptBlock("clientScript", strScript)
End If
End Sub
Private Sub btFocus_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btFocus.Click
Dim strScript As String = ""
RegisterStartupScript("focusScript", strScript)
End Sub
' 子視窗 (Popup.aspx)
' 母視窗按鈕
RegisterStartupScript,確保 DOM 就緒。IsClientScriptBlockRegistered/IsStartupScriptRegistered 避免重複註冊。window.open 載入獨立 .aspx 頁面,透過 window.opener 或 postMessage 通訊。ModalPopupExtender (AJAX Control Toolkit) 或 Bootstrap Modal 取代原生彈出視窗,體驗更佳。