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

我们新建一个default页面:

  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事件里面注册下两个脚本:

  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获取页面上的值是获取不到的。

最新文章

  1. TODO List - 任务表
  2. java多线程 ThreadPoolExecutor 策略的坑
  3. [转]UML八大误解
  4. SWIFT UITableView的基本用法
  5. Oracle Create DBLink
  6. Codeforces Gym 100513D D. Data Center 前缀和 排序
  7. CreateObject(&quot;Wscript.Shell&quot;)用法
  8. Java 线程第三版 第一章Thread导论、 第二章Thread的创建与管理读书笔记
  9. ecshop 报错
  10. Swift中的协议
  11. JVM总括二-垃圾回收:GC Roots、回收算法、回收器
  12. Random() 插入数据重复的问题
  13. JavaScrit全面总结
  14. WCF ChannelFactory&lt;T&gt; WCF Channel and ChannelFactory Caching
  15. 调用另一个文件的python代码【转载】
  16. MethodInfo类的一般使用
  17. 在Windows Server 2012中打开传统的磁盘管理界面
  18. 让Android 变身回一台真正的Linux系统吧!!!
  19. Android 7.1 SystemUI--Multi-Window多窗口模式
  20. ActiveMQ的用途

热门文章

  1. 动态追踪技术 Dynamic Tracing
  2. YTU 2586: 填空题B-字画鉴别
  3. Memcache存储大数据的问题(大于1m)
  4. 逆向分析一个完整的C++程序包含寄存器与参数传递详解
  5. Groupby 方法语法
  6. POJ2800:Joseph&#39;s Problem(等差数列)
  7. UVA1437 String painter
  8. React实战之将数据库返回的时间转换为几分钟前、几小时前、几天前的形式。
  9. centos 7更换阿里源
  10. 前端_vue-cli+element-ui+AceEditor+codemirror+electron-vue