RegisterClientScriptBlock和RegisterStartupScript的区别

RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock和Response.Write。

我们新建一个default页面:

[html] view plaincopyprint?

  1. <SPAN style="FONT-FAMILY: Microsoft YaHei"><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Study._default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head runat="server">
  5. <title></title>
  6. <script type="text/javascript">
  7. function GetValue() {
  8. var value = document.getElementById("test").value;
  9. alert(value);
  10. }
  11. </script>
  12. </head>
  13. <body>
  14. <form id="form1" runat="server">
  15. <div>
  16. <input type="text" value="value" id="test"/>
  17. </div>
  18. </form>
  19. </body>
  20. </html>
  21. </SPAN>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="Study._default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function GetValue() {
            var value = document.getElementById("test").value;
            alert(value);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <input type="text" value="value" id="test"/>
    </div>
    </form>
</body>
</html>

然后我们在后台pageload事件里面注册下两个脚本:

[csharp] view
plain
copyprint?

  1. <SPAN style="FONT-FAMILY: Microsoft YaHei"> protected void Page_Load(object sender, EventArgs e)
  2. {
  3. if (!IsPostBack) {
  4. Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "msg", "<script>alert(‘RegisterClientScriptBlock‘)</script>");
  5. Page.ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert(‘RegisterStartupScript‘)</script>");
  6. }
  7. }</SPAN>
 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) {
                Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "msg", "<script>alert(‘RegisterClientScriptBlock‘)</script>");
                Page.ClientScript.RegisterStartupScript(this.GetType(), "msg", "<script>alert(‘RegisterStartupScript‘)</script>");
            }
        }

运行页面我们可以在下图清楚地看到两个脚本的注册位置,RegisterClientScriptBlock在<form>标签之后,而RegisterStartupScript在</form>标签之前。

所以假如我们在页面未加载完全之前使用RegisterClientScriptBlock获取页面上的值是获取不到的。

时间: 2024-10-22 16:02:09

RegisterClientScriptBlock和RegisterStartupScript的区别的相关文章

RegisterClientScriptBlock 与 RegisterStartupScript 的区别

RegisterClientScriptBlock.RegisterStartupScript 都是注册一个脚本块. ClientScript.RegisterClientScriptBlock(this.GetType(), "script1", "alert(1);", true);ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);&quo

Response.Write 、RegisterClientScriptBlock和RegisterStartupScript总结

Response.Write .RegisterClientScriptBlock和RegisterStartupScript总结 Page.ClientScript.RegisterStartupScript用法小结 原文链接:http://blog.csdn.net/qiujialongjjj/article/details/6680252 使用类型.键.脚本文本和指示是否添加脚本标记的布尔值向 Page 对象注册启动脚本. 参数 type 要注册的启动脚本的类型. key 要注册的启动脚本

response.write和ClientScript.RegisterStartupScript的区别

Response.Write的生成HTML代码,你会发现Response.Write方法生成的代码是写到了HTML代码的最开始,即标签之前.此 时,所有的 HTML对象都还没有生成,如果要想使用HTML内的对象,并与之交互,就会出现“找不到对象”的错误.因此,笔者推荐一个更加符合CodeBehind 方式的方式----使用RegisterXXX方法.RegisterXXX包括:RegisterClientScriptBlock. RegisterStartupScript以及用于判断的IsSta

ASP.NET in C#,ClientScript.RegisterStartupScript与ClientScript.RegisterClientScriptBlock用法之己见

ClientScript.RegisterStartupScript:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscriptmanager.registerstartupscript(v=vs.80) ClientScript.RegisterClientScriptBlock:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscriptmanag

C# 中解决页面刷新后字体等变大问题

来源:http://blog.csdn.net/wcsjsdn/article/details/5109605 我们在.net开发中时常会遇到一个问题,那就是,当点击某个按钮后,调用js语句,当点击"确定"后,会发现页面的css样式表丢失,页面的框架不正常. 那么,我们用什么样的代码能让他既有js的效果语句,又不影响页面的基本框架啦,这句需要用到页面注册的知识:RegisterClientScriptBlock或RegisterStartupScript,这两个的效果一下,唯一区别是:

asp.net 自定义控件

在Visual Studio中,所有的ASP.NET 2.0控件都是自定义控件,创建自己的自定义控件一般需要完成以下三步.(1)在站点APP_Code下创建一个新类:(2)修改这个类,让它成为WebControl类(包含在System.Web.UI.WebControls命名空间)的派生类:(3)重写基类(即WebControl类)的RenderContents()方法. 下面是一个最简单的ASP.NET控件,它的功能只有一个,显示"Hellow World". using Syste

C# 从后台代码同步或异步注册Javascript到页面之RegisterStartupScript和RegisterClientScriptBlock的区别

下面来讲讲同步注册JS和异步注册JS的区别 同步注册JS:RegisterClientScriptBlock,相当于在 form开始处(紧接 <form runat="server"> 标识之后)发送脚本块,在HTML节点还没加载的时候就可以先注册JS了 异步注册JS:RegisterStartupScript,在 form结尾处(在 </form> 标识之前)发送脚本块,在document装载完成后会执行,等价于body.onload=f(){}里的内容,要等

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>a

ASP.NET中RegisterStartupScript和RegisterClientScriptBlock有区别吗

今天用RegisterClientScriptBlock()方法调用了alertify.js(绚丽的实现alert()同样的提示功能): Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "message", "<script>alertify.success('删除成功!');</script>"); 错误信息大致是这样:alertify is undefined