Page.Response.Write("<script>var response;</script>");
Page.RegisterStartupScript("RegisterStartupScript","<script>var RegisterStartupScript;</script>");
Page.RegisterClientScriptBlock("RegisterClientScriptBlock","<script>var RegisterClientScriptBlock;</script>");
Response.Write輸出後的位置在源檔案的第一行.
RegisterClientScriptBlock輸出後的位置會在<form>的下一行.(在asp.net內建的指令碼和一些隱藏欄位之下).
RegisterStartupScript
輸出後的位置會在</form>的上一行.
RegisterClientScriptBlock的原型與RegisterStartupScript相同,兩個函數不同在於將其
包含的指令碼代碼寫入到HTML檔案的不同位置.RegisterClientScriptBlock在 Page 對象的
元素的開始標記後立即發出用戶端指令碼,RegisterStartupScript則是在Page 對象的
元素的結束標記之前發出該指令碼。如果你的指令碼有與頁面對象(doucument對象)進行互動的語句,則推薦使用
RegisterStartupScript,反之如果要想用戶端指令碼儘可能早的執行,則可以使用RegisterClientScriptBlock或
Response.Write。
RegisterClientScriptBlock一般返回的是用戶端函數的封裝,而RegisterStartupScript返回得函數在
document裝載完成後會執行,類似於我們平時所說的body
onload="f()"裡面的函數;這兩個方法在用戶端轉譯的代碼位置不同,RegisterClientScriptBlock在<form
runat=server>之後,而RegisterStartupScript在</form>之前。
補充例子:
....
</HEAD>
<body MS_POSITIONING="GridLayout">
<form name="Form1" method="post" action="WebForm6.aspx" id="Form1">
<input type="hidden" name="__VIEWSTATE" value="dDw3MzU1MTQ5MzY7Oz6nugrEg+5T6RC7MTIuLoIrMLQLPw==" />
<script>function block(){}</script> ------------>RegisterClientScriptBlock()方法輸出的在這裡
<input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 120px" />
<script>function startup(){}</script> ------------>RegisterStartupScript()方法輸出的在這裡
</form>
</body>
</HTML>