栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

RegisterStartupScript和RegisterClientScriptBlock之间的区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RegisterStartupScript和RegisterClientScriptBlock之间的区别?

这是一个旧的讨论线程,在其中我列出了主要区别以及应使用每种方法的条件。我认为您可能会觉得进行讨论很有用。

要解释与您发布的示例相关的差异:

一个。使用时

RegisterStartupscript
,它将在页面中的所有元素 之后
(紧靠表单的end标签之前)呈现脚本。这使脚本可以调用或引用页面元素,而不会在页面的DOM中找不到它们。

这是调用该

RegisterStartupscript
方法时页面的呈现源:

<html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1"><title></title></head><body>    <form name="form1" method="post" action="Startupscript.aspx" id="form1">        <div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="someViewstategibberish" />        </div>        <div> <span id="lblDisplayDate">Label</span> <br /> <input type="submit" name="btnPostback" value="Register Startup script" id="btnPostback" /> <br /> <input type="submit" name="btnPostBack2" value="Register" id="btnPostBack2" />        </div>        <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="someViewstategibberish" />        </div>        <!-- Note this part -->        <script language='javascript'> var lbl = document.getElementById('lblDisplayDate'); lbl.style.color = 'red';        </script>    </form>    <!-- Note this part --></body></html>

b。使用时

RegisterClientscriptBlock
,脚本将在Viewstate标记之后但在任何页面元素之前呈现。由于这是一个直接脚本(不是可以
调用 的函数,因此它将被浏览器立即执行。但是在此阶段,浏览器无法在Page DOM中找到标签,因此您应该收到“找不到对象”错误。

这是调用该

RegisterClientscriptBlock
方法时页面的呈现源:

<html xmlns="http://www.w3.org/1999/xhtml"><head id="Head1"><title></title></head><body>    <form name="form1" method="post" action="Startupscript.aspx" id="form1">        <div> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="someViewstategibberish" />        </div>        <script language='javascript'> var lbl = document.getElementById('lblDisplayDate'); // Error is thrown in the next line because lbl is null. lbl.style.color = 'green';

因此,总而言之,如果要呈现函数定义,则应调用后一种方法。然后,您可以使用前一种方法(或添加客户端属性) 呈现 对该函数调用

评论后编辑:


例如,以下功能将起作用:

protected void btnPostBack2_Click(object sender, EventArgs e) {   System.Text.StringBuilder sb = new System.Text.StringBuilder();   sb.Append("<script language='javascript'>function ChangeColor() {");   sb.Append("var lbl = document.getElementById('lblDisplayDate');");   sb.Append("lbl.style.color='green';");   sb.Append("}</script>");  //Render the function definition.   if (!Clientscript.IsClientscriptBlockRegistered("JSscriptBlock"))   {    Clientscript.RegisterClientscriptBlock(this.GetType(), "JSscriptBlock", sb.ToString());   }  //Render the function invocation.   string funcCall = "<script language='javascript'>ChangeColor();</script>";  if (!Clientscript.IsStartupscriptRegistered("JSscript"))  {     Clientscript.RegisterStartupscript(this.GetType(), "JSscript", funcCall);   } }


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465430.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号