文章出處
今天研究了上方的文章,自己也實作一下,免得日後忘記。
依照上方的網頁解說,再加上自己額外的onclientclick測試,讓自己更清楚流程。
執行的順序會是這樣:
當Client端按下Button後,執行順序會是這樣
1.Click
2.Sea
3.Hello World
OnClienClick 一定會先執行,再來以下面的程式看起來會先執行Hello World,但其實不是這樣,ScriptManager.RegisterStartupScript 會註冊在 </form> 之前,而ScriptManager.RegisterClientScriptBlock會註冊在<form>之後,所以當網頁PostBack回來後,會執行<form>之後的 HelloSea(),再來才會執行 HellloWorld()
codebehind:
protected void Button1_Click(object sender, EventArgs e)
{
//故意寫成這樣
ScriptManager.RegisterStartupScript(this,this.Page.GetType(), "Hello", "HelloWorld();", true);
ScriptManager.RegisterClientScriptBlock(this, this.Page.GetType(), "Test", "HelloSea();", true);
}
.aspx
<script type="text/javascript">
//HelloWorld();
function HelloWorld() {
alert('Hello World');
}
function HelloSea() {
alert('Hello Sea');
}
</script>
<asp:Button ID="Button1" runat="server" OnCommand="Button1_Command" Text="Button" OnClick="Button1_Click" OnClientClick="alert('Click');" />