RegisterStartupScript或RegisterClientScriptBlock注册js脚本而无法执行的问题分析

本文详细解释了.NET框架中RegisterStartupScript和RegisterClientScriptBlock方法用于注册JavaScript脚本的区别,并讨论了在实际应用中遇到的常见问题及其解决方案。包括确认JS方法正确性、检查注册成功与否、处理前后顺序问题等。通过实践案例,帮助开发者更好地理解和应用这些方法。

首先:我们得知道,RegisterStartupScript,RegisterClientScriptBlock两个方法注册js脚本的位置.

      这两个方法唯一的不同之处在于从“何处”发送脚本块。RegisterClientScriptBlock() 在 Web 窗体的开始处(紧接着 <form runat="server"> 标识之后)发送脚本块,而 RegisterStartupScript() 在 Web 窗体的结尾处(在 </form> 标识之前)发送脚本块.

      而在注册脚本,后不能执行js代码,这个让很多人都不能理解,甚至找不到原因.

那我们现在就共同来探讨一下这个问题.

    1.确保js的方法正确,如果注册js成功,js文件没有问题,是完成可以执行的. 也就是我们所说的.注册成功了,却是js本身存在异常而导致没办法执行.怎么知道已经通过方法注册成功了呢?请看html源文件 是否存在 <script type='text/javascript' >Salert('s_Top');</script>(</form>:我是使用RegisterStartupScript方法注册)所以在此标签结束之前). 所以检查js是关键.

     2.就是根本没办法注册成功,也就是在html源文件根本找不到这段脚本.而在后台调试时,却已经执行.让人很纳闷.这里存在这种情况.

      如果page.aspx页面中不存在<form id="form1" runat="server"></form>标签,是不能注册成功的.代码是执行了在html源文件中找不到js脚本,我们就注意之前所提到的.这两个方法是依赖于form的!  

     3.js正确,注册也正确,却执行不了.这个你就查你所注册的事件和js方法的前后顺序问题.js注册在你所写js之前执行了.也就是说.你的js脚本方法写在</form>,而在页面加载的时候,找不到该方法.因为没加载完,或根本就没加载到js就执行了.

     可以采用,<script type='text/javascript' defer>Salert('s_Top');</script>来解决这个问题,所有加载完才执行.

    目前我所碰到的就这三种情况.也是我们常碰见的三种情况,如果有其他情况请回复!我们来共同探讨!

如果你不想使用form,也需要js脚本执行的情况解决方法,是你不使用这两个方法,而是在页面中增加一个服务器控件比如:<asp:Literal ID="ltjs" runat="server"></asp:Literal>   在程序运行时把 上面提到的js脚本直接给ltjs.Text="<script type='text/javascript' >Salert('s_Top');</script>";这样也可以执行.

 

就这些!

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值