摘要: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後,它才會發生。