RegisterClientScriptBlock和RegisterStartupScript的区别
RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock和Response.Write。
我们新建一个default页面:
- <SPAN style="FONT-FAMILY: Microsoft YaHei"><%@ 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>
- </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事件里面注册下两个脚本:
- <SPAN style="FONT-FAMILY: Microsoft YaHei"> 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>");
- }
- }</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获取页面上的值是获取不到的。
RegisterClientScriptBlock和RegisterStartupScript的区别的更多相关文章
- RegisterClientScriptBlock 与 RegisterStartupScript 的区别
RegisterClientScriptBlock.RegisterStartupScript 都是注册一个脚本块. ClientScript.RegisterClientScriptBlock(th ...
- Response.Write 、RegisterClientScriptBlock和RegisterStartupScript总结
Response.Write .RegisterClientScriptBlock和RegisterStartupScript总结 Page.ClientScript.RegisterStartupS ...
- Response.Write,Page.RegisterClientScriptBlock和Page.RegisterStartupScript的区别
Response.Write("<script>");输出在文件头部,一打开就执行. RegisterClientScriptBlock一般返回的是客户端函数的包装, ...
- ASP.NET in C#,ClientScript.RegisterStartupScript与ClientScript.RegisterClientScriptBlock用法之己见
ClientScript.RegisterStartupScript:http://msdn.microsoft.com/zh-cn/library/system.web.ui.clientscrip ...
- ASP.NET 给作为隐藏域的TextBox赋值之后提交表单,无响应?
操作步骤: 给页面隐藏TextBox赋值,然后触发ASP.NET change事件,调用ASP.NET后台方法,调用后执行客户端脚本this.RegisterClientScriptBlock(Dat ...
- ASP.NET中后台注册js脚本攻略(转)
用Page.ClientScript.RegisterClientScriptBlock 和Page.ClientScript.RegisterStartupScript:区别: 1.使用Page ...
- Page.ClientScript、ClientScript、ScriptManager、ClientScriptManager等的详细解说
在 .aspx.cs页面中,输入这四个东西:Page.ClientScript.ClientScript.ScriptManager.ClientScriptManager,均会出提示,表示它们均可用 ...
- asp.net 自定义控件
在Visual Studio中,所有的ASP.NET 2.0控件都是自定义控件,创建自己的自定义控件一般需要完成以下三步.(1)在站点APP_Code下创建一个新类:(2)修改这个类,让它成为WebC ...
- C# 中解决页面刷新后字体等变大问题
来源:http://blog.csdn.net/wcsjsdn/article/details/5109605 我们在.net开发中时常会遇到一个问题,那就是,当点击某个按钮后,调用js语句,当点击& ...
随机推荐
- 针对OpenSSL吐嘈的吐嘈-如此唱反调
前些天写了一篇<令人作呕的OpenSSL>,顿时引来了大量的恶评.令我非常尴尬,同一时候也认为悲哀. 假设说you can you up之类的,我认为起码这人看出了我的本意,仅仅是怀疑我的 ...
- Masonry自动布局:复合约束
前言 说到iOS自动布局,有很多的解决办法.有的人使用xib/storyboard自动布局,也有人使用frame来适配.对于前者,笔者并不喜欢,也不支持.对于后者,更是麻烦,到处计算高度.宽度等,千万 ...
- 七.OC基础加强--1.内存管理 2.野指针,内存泄露 3.set方法的内存管理 4.@property参数 5.@class和循环retain的使用 6.NSString的内存管理
1,内存管理简单介绍 1,为什么要有内存管理? malloc selloc dealloc```需要回头复习 一般的内存 4s 是512m内存:6 是1024m内存: 当内存过大时,会耗尽内存.出现程 ...
- 并不对劲的bzoj1853:[SCOI2010]幸运数字
传送门-> 据说本题的正确读法是[shìng运数字]. 听上去本题很适合暴力,于是并不对劲的人就去写了.其实这题就是一个很普(有)通(趣)暴力+神奇的优化. 首先,会发现幸运数字很少,那么就先搜 ...
- [Usaco2017 Feb]Why Did the Cow Cross the RoadII
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4993 [算法] 动态规划 转移类似于求LCS [代码] #include<bi ...
- 阿里云CentOS7.4启动Tomcat9没有报错,端口已经开放,但是浏览器一直等待响应解决办法7
tomcat9,启动和退出均无报错.centOS7.4防火墙已关闭,阿里云防火墙已经开放端口,telnet测试服务器的端口也通过了,**浏览器访问以后没有提示"无法访问",而是一直 ...
- 《Windows核心编程系列》十一谈谈Windows线程池
Windows线程池 上一篇博文我们介绍了IO完成端口.得知IO完成端口可以非常智能的分派线程.但是IO完成端口仅对等待它的线程进行分派,创建和销毁线程的工作仍然需要我们自己来做. 我们自己也可以创建 ...
- java-异常简介
1.简介 ############################################################### ############################### ...
- NOI2018D2T1 屠龙勇士
安利一下松松松的OJ: 传送门 Description: 有N条巨龙, 对于每个龙含有\(a_i\)的生命, 你有N + M把砍刀, 其中M把是直接给你的, N把是杀死对应的巨龙才能获得的, 每把 ...
- Wannafly挑战赛10:A题:小H和迷宫
题目描述 小H陷入了一个迷宫中,迷宫里有一个可怕的怪兽,血量有N点,小H有三瓶魔法药水,分别可以使怪兽损失a%.b%.c%的血量(之后怪兽的血量会向下取整),小H想合理地运用这三瓶药水,使 ...