常見於:資料儲存後彈窗提示、關閉對話框、重新整理父頁面、觸發客戶端驗證流程等。以下五種方式各有適用情境。
<asp:Button ID="Button1" runat="server" Text="提交"
OnClientClick="return client_click();" OnClick="Button1_Click" />
client_click() 為客戶端函數,回傳 false 可取消 PostBack。Button1.Attributes.Add("onclick", "return confirm('確定刪除?');");
Page_Load 依條件決定是否綁定。return false 阻止回傳。var sb = new StringBuilder();
sb.Append("<script language='javascript'>");
sb.Append("Button2_onclick('" + serverPath + "');");
sb.Append("</script>");
ClientScript.RegisterStartupScript(this.GetType(), "LoadPicScript", sb.ToString());
</form> 前),確保頁面元素已載入。Response.Write("<script type='text/javascript'>alert('完成');</script>");
// 呼叫自訂函數需頂外輸出函數定義
Response.Write("<script>function myfun(){...} myfun();</script>");
<html> 前),無法直接呼叫外部檔案函數,易導致腳本錯誤。ClientScript.RegisterStartupScript(
this.GetType(), "myscript", "<script>MyFun();</script>", false);
false 表示不自動包裹 <script> 標籤(需自行包含)。先執行 Client 腳本(OnClientClick/onclick),再執行 Server 端事件(OnClick)。 若客戶端回傳 false,伺服器端事件不會觸發。
| 需求 | 推薦方式 |
|---|---|
| 按鈕前置確認/攔截 | OnClientClick / Attributes.Add |
| 後端邏輯完成後觸發提示/導向/呼叫外部函數 | RegisterStartupScript |
| 極簡測試/臨時除錯 | Response.Write(不建議正式環境) |