| 方法 | 腳本插入位置 | 適用場景 |
|---|---|---|
RegisterClientScriptBlock | 頁面頂部(<form> 之後) | 定義函數、變量,供後續調用 |
RegisterStartupScript | 頁面底部(</form> 之前) | 頁面加載後立即執行的代碼,需訪問 DOM 元素 |
RegisterClientScriptInclude | 頁面頂部,以 <script src="..."> 引用外部 .js | 引用外部 JavaScript 文件 |
<asp:TextBox ID="TextBox1" ...>,需在腳本中讀取其值錯誤用法(RegisterClientScriptBlock):腳本在 TextBox 渲染前執行,找不到元素,報錯。
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "MyScript",
"alert(document.forms[0]['TextBox1'].value);", true);
正確用法(RegisterStartupScript):腳本在頁面底部,TextBox 已渲染,可正常訪問。
Page.ClientScript.RegisterStartupScript(this.GetType(), "MyScript",
"alert(document.forms[0]['TextBox1'].value);", true);
string jsPath = "myJavaScriptCode.js";
Page.ClientScript.RegisterClientScriptInclude("myKey", jsPath);
// 生成: <script src="myJavaScriptCode.js" type="text/javascript"></script>
RegisterClientScriptBlock。RegisterStartupScript。RegisterClientScriptInclude,利用瀏覽器緩存。ScriptManager / ClientScriptManager 更高級 API,支持腳本合並、壓縮、依賴管理。