RegisterClientScriptBlock 與 RegisterStartupScript 的差別

摘要:RegisterClientScriptBlock 與 RegisterStartupScript 的差別

RegisterClientScriptBlock 與 RegisterStartupScript 的差別在網路的文章已經非常多,不如自己動手實作它們的差異在哪裡?       

在Page_Load裡寫以下程式:

Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "ScriptBlock", "alert('RegisterClientScriptBlock OK!!')", true); 
Page.ClientScript.RegisterStartupScript(this.GetType(), "StartupScript", "alert('RegisterStartupScript OK!!')", true); 
Response.Write("<script>alert('Response.Write OK!!')</script>");

執行後的提示結果:

1.Response.Write OK!!

2.RegisterClientScriptBlock OK!!

3.RegisterStartupScript OK!!

一開始只是註冊script,所以不會因為你放的順序而產生相同的順序,是到最後才會render到html,所以要看html最後呈現的結果而定,它的原始碼如下:

總結:

1.Response.Write在整個的page的最上面,這個還是少用。

2.RegisterClientScriptBlock產生的地方在<form  runat="server"> 的下面,這個會比RegisterStartupScript更早發生,所以要放全域變數的可以用這個。

3.RegisterStartupScript產生的地方在</form> 的上面,方便在client端取值,因為全部的control render後,它才會發生。