.net RegisterStartupScript 和 RegisterClientScriptBlock 输出位置的区别

作者: 来源: 日期:2009-3-20

我们推荐您阅读同名文章:RegisterClientScriptBlock 与 RegisterStartupScript 的区别,其总结性更强。

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(不推荐用 Response.Write 输出脚本,它破坏了网页的结构。ITPOW编辑注)

RegisterClientScriptBlock 一般返回的是客户端函数的包装,而 RegisterStartupScript 返回得函数在 Document 装载完成后会执行,类似于我们平时所说的 <body onload="f()"> 里面的函数;这两个方法在客户端呈现的代码位置不同,RegisterClientScriptBlock 在 <form runat=server> 之后,而 RegisterStartupScript 在 </form> 之前。

相关文章