RegisterClientScriptBlock和RegisterStartupScript这两个方法,都是用来在客户端调用JS代码的。
这两个方法在客户端呈现的代码位置不同,RegisterClientScriptBlock在<form>之后,而RegisterStartupScript在</form>之前。
如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用 RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock。
也就是说,RegisterClientScriptBlock在页面显示出来之前就执行,而RegisterStartupScript是页面显示完成后执行。区别就在于前后的不同。
备注:RegisterStartupScript 等页面元素实例化后弹出对话框,比较适合操作某功能后消息提示;
RegisterClientScriptBlock先弹出对话框待确认后页面元素再实例化。
下面为大家举例:
如果你的页面中有如下代码:
<asp:TextBox ID=”TextBox1” Runat=”server”>Hello ASP.NET</asp:TextBox>
c#代码
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),“MyScript”, myScript, true);
}
此页面运行时会报错,原因是JavaScript function先于text box被安放于浏览器。因此JavaScript function找不到TextBox1。
c#代码
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
Page.ClientScript.RegisterStartupScript(this.GetType(),“MyScript”, myScript, true);
}
这段代码把JavaScript function放置于ASP.NET page底部,因此JavaScript运行时它能找到TextBox1。