Response.Write 与 Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别

Response.Write 与   Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别

方法1,使用Response.Write,这种方法会把JS代码写在页面的最顶部(<html>的前面):
System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert(‘JS代码‘);</script>");

方法2,使用RegisterStartupScript,这种方法会把JS代码嵌入在页面的底部、表单的最后 (</form>前面),适用于要在页面控件加载完成后运行的JS代码 :
System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
if (!page.ClientScript.IsStartupScriptRegistered(page.GetType(),"clientScript"))
    page.ClientScript.RegisterStartupScript(page.GetType(), "clientScript", "<script language=javascript>alert(‘JS代码‘);</script>");

方法3,使用RegisterClientScriptBlock,这种方法会把JS代码嵌入在页面的顶部、表单的最前 (<form>后面),适用于要在控件加载前执行的JS代码,类似于上面的Response.Write方式 :
System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
if (!page.ClientScript.IsClientScriptBlockRegistered(page.GetType(),"clientScript"))
    page.ClientScript.RegisterClientScriptBlock(page.GetType(), "clientScript", "<script language=javascript>alert(‘JS代码‘);</script>");

那么,方法2和方法3之间有何不同呢?主要区别在于,RegisterStartupScript 方法是将 JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form> 的前面。RegisterClientScriptBlock 方法是将 JavaScript 嵌入到页面中开启元素 <form> 的紧后面。那么,这有何不同呢?正如我们将要看到的,这有很大的不同。

就此列举一例,以下是在页面加载到浏览器时,将焦点置于该页面上的一个文本框中的方法 - 使用利用了 RegisterStartupScript 方法的 Visual Basic:

Page.ClientScript.RegisterStartupScript(Me.GetType(), "Testing", _   "document.forms[0][‘TextBox1‘].focus();", True)由于在浏览器运行到页面底部并执行此小段 JavaScript 时,就已生成了页面上的文本框,并已将其放到了页面中,因此,此方法运行正常。但是,如果不按照上述方法,而编写如下代码(使用 RegisterClientScriptBlock 方法):

Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "Testing", _  "document.forms[0][‘TextBox1‘].focus();", True)文本框控件将不会获得焦点,且会在页面上生成一个 JavaScript 错误

http://blog.csdn.net/alexxzr/archive/2009/12/25/5073782.aspx

时间: 2024-10-23 06:33:24

Response.Write 与 Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别的相关文章

asp.net ClientScript.RegisterStartupScript与rsponse.write("&lt;script&gt;alert()&lt;/script&gt;")区别

rsponse.write("<script>alert()</script>")可能会影响页面的布局并且只能调用javascript的内置函数 ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>window.open('default2.aspx')</script>")) 可以调用前台的自定义javascript函数和

Page.ClientScript.RegisterStartupScript 与 Page.ClientScript.RegisterClientScriptBlock 之间的区别

Page.ClientScript.RegisterClientScriptBlock 在页面紧跟<form>之后,整个页面未完全加载完成. Page.ClientScript.RegisterStartupScript 在页面</form>之前,页面基本空间等加载完成之后. 举个例子,页面加载时需要给页面 文本框 赋默认值. 用Page.ClientScript.RegisterStartupScript OK,是没问题的. 但是用Page.ClientScript.Regist

ClientScript.RegisterStartupScript()与ScriptManager.RegisterStartupScript()

page类:1.页头中inherits标识继承于哪个类.partial标 识局部的,类的一部分,编译的时候 把同名的 partial合并成一个完整的class文件,然后编译成 中间文件.2..net页面的生命周期,控件的生命周期,生命周 期的应用.页面-属性-document-trace设为true, 运行页面可以看到跟踪信息.3.统一验证身份的方法,写一个验证的类文件(类 文件中添加this.Load+=new eventhander (thisLoad) void thisLoad(obje

asp.net--Page.ClientScript.RegisterStartupScript用法

//ASP.NET后台页面跳转 Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>if(confirm('保存成功!是否继续添加?')) {location.href='ProductonAdd.aspx'}else{location.href='ProductonList.aspx'}</script>"); //后台弹出确定框 ClientScript

asp.net中Page.ClientScript.RegisterStartupScript用法小结(转)

//ASP.NET后台页面跳转 Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>if(confirm('保存成功!是否继续添加?')){location.href='ProductonAdd.aspx'}else{location.href='ProductonList.aspx'}</script>"); //后台弹出确定框 ClientScript.

page.ClientScript.RegisterStartupScript

page.ClientScript.RegisterStartupScript()可以添加客户端脚本,有4个参数 type:要注册的启动脚本的类型. key:要注册的启动脚本的键. script:要注册的启动脚本文本. addScriptTags:指示是否添加脚本标记的布尔值. 在后台中写下代码;page.ClientScript.RegisterStartupScript(page.GetType(), "js", "alert('在html中处理');"); 就

Page.ClientScript.RegisterStartupScript不执行问题

c#后台使用Page.ClientScript.RegisterStartupScript在前台注册一段脚本提示,发现没有效果,寻寻觅觅,终于从度娘处找到了原因: 该页面多次使用到了Page.ClientScript.RegisterStartupScript(Type type, string key, string script) 问题就出在了参数key上,同一页面会按顺序执行Page.ClientScript.RegisterStartupScript(Type type, string

asp.net中Page.ClientScript.RegisterStartupScript用法小结

ClientScript.RegisterStartupScript(Page.GetType(), "Show", "alert('" + l_strConferenceNo + "');",true);原型如下 ClientScript.RegisterStartupScript(Type type, string key, string script,bool addScriptTags);区别是bool addScriptTags为tru

Page.ClientScript.RegisterStartupScript用法小结

使用类型.键.脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本. 参数 type 要注册的启动脚本的类型. key 要注册的启动脚本的键. script 要注册的启动脚本文本. addScriptTags 指示是否添加脚本标记的布尔值. 备注: 启动脚本由它的键和类型唯一标识.具有相同的键和类型的脚本被视为重复脚本.只有使用给定的类型和键对的脚本才能使用该页面进行注册.试图注册一个已经注册的脚本不会创建重复的脚本. 调用 IsStartupScriptRegistered 方