| 方法 | 用途 | 輸出位置 | 自動包裹 <script> | 典型場景 |
|---|---|---|---|---|
RegisterClientScriptInclude | 引用外部 .js 文件 | 頁面頭部(ViewState 後) | 否(生成 <script src="...">) | jQuery、工具庫、公共組件 |
RegisterStartupScript | 內聯腳本塊/引用腳本 | 頁面末尾(</form> 前) | 是(最後參數 true) | 頁面初始化代碼、控件綁定、第三方庫引用 |
if (!Page.ClientScript.IsClientScriptIncludeRegistered("jquery"))
{
Page.ClientScript.RegisterClientScriptInclude("jquery", "https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js");
}
優點:去重、瀏覽器並行下載、可緩存、不阻塞頁面渲染(配合 `defer`/`async` 需手工輸出)。
string initScript = @"
$(function() {
$('#grid').dataTable();
$('#datepicker').datepicker({format: 'yyyy-mm-dd'});
});
";
if (!Page.ClientScript.IsStartupScriptRegistered("pageInit"))
{
// 最後參數 true:自動包裹 <script type="text/javascript">...</script>
Page.ClientScript.RegisterStartupScript(typeof(string), "pageInit", initScript, true);
}
輸出位置:緊貼 `` 之前,確保 DOM 就緒、控件 ClientID 可用。
string scriptRef = "";
if (!Page.ClientScript.IsStartupScriptRegistered("customLib"))
{
// 最後參數 false:不自動包裹,需自帶完整 script 標籤
Page.ClientScript.RegisterStartupScript(typeof(string), "customLib", scriptRef, false);
}
輸出同樣在頁尾,適用於必須在頁面結構後加載的庫(如依賴某個 DOM 元素)。
若頁面含 `