惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
罗磊的独立博客
爱范儿
爱范儿
J
Java Code Geeks
博客园 - 司徒正美
N
Netflix TechBlog - Medium
Microsoft Security Blog
Microsoft Security Blog
美团技术团队
小众软件
小众软件
Google DeepMind News
Google DeepMind News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
V2EX
博客园 - 聂微东
云风的 BLOG
云风的 BLOG
WordPress大学
WordPress大学
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Jina AI
Jina AI
Y
Y Combinator Blog
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Martin Fowler
Martin Fowler
Vercel News
Vercel News

博客园 - seyon

监控 SQL Server 的运行状况 [MSDN]Static,迭代器 [转]不用合并模块部署水晶报表 从vs2005升级到vs2008的理由 [水晶报表]打开报表失败 水晶报表检索COM类工厂中CLSID为{11BD5260-15B6-412D-80DB-12BB60B8FE50}的组件时失败解决办法 DB2连接方法 [转]WEB Service 下实现大数据量的传输 【转】SOA技术综览 【SQL2005 ReportingService特性与应用】笔记 自定义控件学习笔记(5):事件委托列表的使用 【.NET和J2EE使用Web Services的互操作性】笔记 Hashtable的遍历 有用的VS技巧 Windows service安装项目 DataView操作后的结果集 自定义水晶报表工具条 【跟我一起学Visual Studio 2005(1):C#语法篇(上)】笔记 【跟我一起学Visual Studio 2005(19):Crystal Report篇之Web报表服务】笔记
RegisterStartupScript和RegisterClientScriptBlock输出位置...
seyon · 2007-11-05 · via 博客园 - seyon

Page.Response.Write("<script>var response;</script>");    

Page.RegisterStartupScript("RegisterStartupScript","<script>var RegisterStartupScript;</script>");    

Page.RegisterClientScriptBlock("RegisterClientScriptBlock","<script>var RegisterClientScriptBlock;</script>");   

Response.Write输出后的位置在源文件的第一行.

RegisterClientScriptBlock输出后的位置会在<form>的下一行.(在asp.net自带的脚本和一些隐藏域之下).

RegisterStartupScript输出后的位置会在</form>的上一行.

RegisterClientScriptBlock的原型与RegisterStartupScript相同,两个函数不同在于将其包含的脚本代码写入到HTML文件的不同位置.RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock或Response.Write。

RegisterClientScriptBlock一般返回的是客户端函数的包装,而RegisterStartupScript返回得函数在document装载完成后会执行,类似于我们平时所说的body onload="f()"里面的函数;这两个方法在客户端呈现的代码位置不同,RegisterClientScriptBlock在<form runat=server>之后,而RegisterStartupScript在</form>之前。

补充例子:
....
</HEAD>
<body MS_POSITIONING="GridLayout">
<form name="Form1" method="post" action="WebForm6.aspx" id="Form1">
           <input type="hidden" name="__VIEWSTATE" value="dDw3MzU1MTQ5MzY7Oz6nugrEg+5T6RC7MTIuLoIrMLQLPw==" />
<script>function block(){}</script>    ------------>RegisterClientScriptBlock()方法输出的在这里

<input name="TextBox1" type="text" id="TextBox1" style="Z-INDEX: 101; LEFT: 296px; POSITION: absolute; TOP: 120px" />

            <script>function startup(){}</script> ------------>RegisterStartupScript()方法输出的在这里

</form>
</body>
</HTML>