RegisterClientScriptBlock与RegisterStartupScript区别
RegisterClientScriptBlock与RegisterStartupScript区别
RegisterClientScriptBlock与RegisterStartupScript区别一、前端输出脚本有以下三种方法
方法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>");
二、RegisterClientScriptBlock 与 RegisterStartupScript的构造函数
RegisterStartupScript(key, script)
RegisterClientScriptBlock(key, script)
RegisterClientScriptBlock (type,key,script,script tag specification)
RegisterStartupScript (type,key,script,script tag specification)
三、RegisterClientScriptBlock 与 RegisterStartupScript的区别
1、这两个方法唯一的不同之处在于向“何处”注册脚本块。
RegisterStartupScript 方法是将 JavaScript 嵌入到 ASP.NET 页面的底部,恰好位于关闭元素 </form> 的前面。
RegisterClientScriptBlock 方法是将 JavaScript 嵌入到页面中开启元素 <form> 的紧后面。
2、例如
(1).使用Page.ClientScript.RegisterClientScriptBlock
代码
<%@ Page Language=”C#” %>
<script runat=”server”>
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”function AlertHello() { alert(‘Hello ASP.NET’); }”;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),
“MyScript”, myScript, true);
}
</script>
运行结果如下:
<html>
<head><title>
Adding JavaScript
</title></head>
<body>
<form method=”post” action=”JavaScriptPage。aspx” id="”form1”">
<li>
<input type=”hidden” name=”__VIEWSTATE”
value=”/wEPDwUKMTY3NzE5MjIyMGRkiyYSRMg+bcXi9DiawYlbxndiTDo=” />
</li>
<script type=”text/javascript”>
<!--
function AlertHello() { alert(‘Hello ASP.NET’); }// -->
</script>
<li>
<input type=”submit” name=”Button1” value=”Button” onclick=”AlertHello();”
id="”Button1”" />
</li>
</form>
</body>
</html>
(2).使用Page.ClientScript.RegisterStartupScript
RegisterStartupScript 方法与RegisterClientScriptBlock方法最大的不同是:RegisterStartupScript 把script放置在 ASP.NET page的底部,而RegisterClientScriptBlock把script放置在ASP.NET page的顶部。
如果你的页面中有如下代码:
<asp:TextBox ID=”TextBox1” Runat=”server”>Hello ASP.NET</asp:TextBox>
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), “MyScript”, myScript, true);
}
此页面运行时会报错,原因是JavaScript function先于text box被安放于浏览器。因此JavaScript function找不到TextBox1。
应该为:
protected void Page_Load(object sender, EventArgs e)
{
string myScript = @”alert(document.forms[0][‘TextBox1’].value);”;
Page.ClientScript.RegisterStartupScript(this.GetType(), “MyScript”, myScript, true);
}
这段代码把JavaScript function放置于ASP.NET page底部,因此JavaScript运行时它能找到TextBox1。
- asp.net把word文档转换成pdf
- Asp.Net实现网站的快捷方式
- ASP.NET中application对象的用法
- ASP.NET匿名类型var
- ASP.NET中Web.config文件的配置
- asp.net中Server.MapPath的使用
- ASP.NET中重载(Overload)和覆写(Override)
- ASP.NET URL路径问题
- ASP.NET的Random随机数
- ASP.NET身份验证方式
- ASP.NET文件打包压缩下载
- ASP.NET中Obsolete属性
- asp.net网站如何优化
- ASP.NET将WORD、PDF、PPT转为图片
- ASP.NET windows服务调试
- windowsserver2008部署php项目(win2008 r2 服务器环境配置FTP/ASP/ASP.Net/PHP)
- 冬季钓鱼子线用 长 还是 短(冬季钓鱼子线用)
- 鱼竿 夏钓短,冬钓长 ,一定是这样 认清优缺点在选竿(鱼竿夏钓短冬钓长)
- 鲢鳙钓底还是钓浮 流水的水域应怎样做钓(鲢鳙钓底还是钓浮)
- 入秋后的第二场苹果发布会来了 全新M1系列芯片登场(入秋后的第二场苹果发布会来了)
- 苹果正式发布自研芯片M1 5nm 32核心 彻底放弃Intel(苹果正式发布自研芯片M1)
- 苹果自研芯片跑分对比 A16芯片排名靠后,M1系列霸榜(苹果自研芯片跑分对比)
热门推荐
- docker日志挂载(docker run -v 挂载数据卷异常,容器状态一直是restarting的解决)
- springboot内置tomcat启动过程(Tomcat启动springboot项目war包报错:启动子级时出错的问题)
- docker 技术认证(docker获取Let's Encrypt永久免费SSL证书的方法)
- 安装hbase1.1.2(Vmware + Ubuntu18.04 安装 Hbase 2.3.5的详细教程)
- mysqlbinlog怎么分析(MySQL中使用binlog时格式该如何选择)
- html5播放器按菜单键没反应(解决HTML5中的audio在手机端和微信端的不能自动播放问题)
- python爬取在线评论(Python爬虫实现爬取百度百科词条功能实例)
- openssl 默认私钥类型(Windows安装Openssl并使用Openss生成公钥私钥)
- Web.config 图形化编辑器:ASPhere
- mysql主从复制原理详解(详解MySQL kill 指令的执行原理)