完整工具類
using System;
using System.Web;
using System.Web.UI;
public static class JsHelper
{
/// 彈出警示視窗
public static void Alert(string message, Page page)
{
string js = $@"<script>alert('{message.Replace("'", "\\'")}');</script>";
Register(page, "alert", js);
}
/// 警示後導向新網址
public static void AlertAndRedirect(string message, string url, Page page)
{
string js = $@"<script>alert('{message.Replace("'", "\\'")}');window.location.replace('{url}');</script>";
Register(page, "AlertAndRedirect", js);
}
/// 瀏覽歷史前進/後退
public static void GoHistory(int steps, Page page)
{
string js = $@"<script>history.go({steps});</script>";
Register(page, "GoHistory", js);
}
/// 關閉目前視窗
public static void CloseWindow()
{
string js = @"<script>parent.opener=null;window.close();</script>";
HttpContext.Current.Response.Write(js);
HttpContext.Current.Response.End();
}
/// 重新整理開啟者視窗並關閉自己
public static void RefreshParent(string url, Page page)
{
string js = $@"<script>window.opener.location.href='{url}';window.close();</script>";
Register(page, "RefreshParent", js);
}
/// 重新整理 Opener
public static void RefreshOpener(Page page)
{
string js = @"<script>opener.location.reload();</script>";
Register(page, "RefreshOpener", js);
}
/// 開啟指定尺寸新視窗
public static void OpenWindow(string url, int w, int h, int top, int left, Page page)
{
string js = $@"<script>window.open('{url}','','height={h},width={w},top={top},left={left},location=no,menubar=no,resizable=yes,scrollbars=yes,status=yes,titlebar=no,toolbar=no,directories=no');</script>";
Register(page, "OpenWindow", js);
}
/// 導向指定網址
public static void Redirect(string url, Page page)
{
string js = $@"<script>window.location.replace('{url}');</script>";
Register(page, "Redirect", js);
}
/// 開啟 Modal Dialog (IE 專用)
public static void ShowModal(string url, int w, int h, int top, int left, Page page)
{
string features = $"dialogWidth:{w}px;dialogHeight:{h}px;dialogLeft:{left}px;dialogTop:{top}px;center:yes;help=no;resizable:no;status:no;scroll:yes";
ShowModal(url, features, page);
}
public static void ShowModal(string url, string features, Page page)
{
string js = $@"<script>showModalDialog('{url}','','{features}');</script>";
Register(page, "ShowModal", js);
}
private static void Register(Page page, string key, string script)
{
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(), key))
page.ClientScript.RegisterStartupScript(page.GetType(), key, script);
}
}
使用範例
// 在 Button_Click 事件中
JsHelper.Alert("儲存成功", this);
JsHelper.AlertAndRedirect("刪除完成", "List.aspx", this);
JsHelper.OpenWindow("Detail.aspx?id=1", 800, 600, 100, 200, this);
優點
- 統一使用
RegisterStartupScript 避免重複註冊。
- 自動處理單引號跳脫,減少 JS 語法錯誤。
- 集中管理常用客戶端互動模式,提升維護性。