Asp.net服务器控件在后台发出客户端脚本块方法

这几天做项目的时候又碰到往前台打脚本,其实以前用过了,今天特意拿出来总结一下两者(RegisterClientScriptBlock/RegisterStartupScript)的区别:

1.Page.RegisterClientScriptBlock方法:
客户端脚本刚好在Page对象的<form runat=”server”>元素的开始标志后发出。

RegisterClientScriptBlock() 方法用于为响应客户端事件而执行的脚本代码。通过此方法发送的脚本块位于 Web 页面的开始处,因为这种方法不要求将脚本块置于所有 HTML 元素之后,即它一般不使用文档内自定义的控件

 以下是该方法的一个使用实例:

<% @ Page Language = " vb "  AutoEventWireup = " false "  Codebehind = " WebForm5.aspx.vb "  Inherits = " WebApplication4.WebForm5 "   %>
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
    
< HEAD >
        
< title > WebForm5 </ title >
        
< meta  name ="GENERATOR"  content ="Microsoft Visual Studio .NET 7.1" >
        
< meta  name ="CODE_LANGUAGE"  content ="Visual Basic .NET 7.1" >
        
< meta  name ="vs_defaultClientScript"  content ="JavaScript" >
        
< meta  name ="vs_targetSchema"  content ="http://schemas.microsoft.com/intellisense/ie5" >
    
</ HEAD >
    
< body >
        
< form  id ="Form1"  method ="post"  runat ="server" >
            
< input  type ="button"  value ="ClickMe"  onclick ="OnClick()" >
            
< span  id ="showMessage2" ></ span >
        
</ form >
    
</ body >
</ HTML >

 

    Private   Sub  Page_Load( ByVal  sender  As  System.Object,  ByVal  e  As  System.EventArgs)  Handles   MyBase .Load
        
'  Form the script to be registered at client side.
         Dim  scriptString  As   String
        scriptString 
=   " <script language=JavaScript>  function OnClick(){ "
        scriptString 
+=   " showMessage2.innerHTML='<h4>Welcome to Microsoft.NET!</h4>'}< "       
        scriptString 
+=   " / "
        scriptString 
+=   " script> "
        
If  ( Not  IsClientScriptBlockRegistered( " clientScript " ))  Then
            RegisterClientScriptBlock(
" clientScript " , scriptString)
        
End   If

    
End Sub

运行后生成的源文件:

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
    
< HEAD >
        
< title > WebForm5 </ title >
        
< meta  name ="GENERATOR"  content ="Microsoft Visual Studio .NET 7.1" >
        
< meta  name ="CODE_LANGUAGE"  content ="Visual Basic .NET 7.1" >
        
< meta  name ="vs_defaultClientScript"  content ="JavaScript" >
        
< meta  name ="vs_targetSchema"  content ="http://schemas.microsoft.com/intellisense/ie5" >
    
</ HEAD >
    
< body >
        
< form  name ="Form1"  method ="post"  action ="WebForm5.aspx"  id ="Form1" >
< input  type ="hidden"  name ="__VIEWSTATE"  value ="dDwtNjU0MzcyMTk1Ozs+xxQ3E05ag4Me8uTAnG3LTO9zgAg="   />
    
< script  language =JavaScript >    function  OnClick(){showMessage2.innerHTML = ' < h4 > Welcome to Microsoft.NET !</ h4 > '} </ script >

            
< input  type ="button"  value ="ClickMe"  onclick ="OnClick()" >
            
< span  id ="showMessage2" ></ span >
        
</ form >
    
</ body >
</ HTML >

以很清楚的看到客户端脚本在Page对象的<form>元素的开始标志后发出。

2.Page.RegisterStartupScript在Web窗体的结尾处(在 </form> 标识之前)发送脚本块。
RegisterStartupScript() 用于添加要在加载页面后运行的脚本块,通过这种方法添加的脚本块位于 Web 窗体的结尾处,因为必须在脚本运行前定义脚本要修改的 HTML 元素。也就是说,如果您要使用客户端脚本将焦点设置到文本框,必须确保文本框的 HTML 标记位于设置该文本框的焦点的脚本之前。

如果你仅仅是注册一些函数,这两者的效果是一样的。但如果你要注册一些全局的脚本,如定义一些全局变量并赋值,那么它在HTML中的先后位置可能就比较重要,此时就应该用RegisterStartupScript保证脚本能在前面被执行。


运行后生成的源文件

<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
< HTML >
    
< HEAD >
        
< title > WebForm5 </ title >
        
< meta  name ="GENERATOR"  content ="Microsoft Visual Studio .NET 7.1" >
        
< meta  name ="CODE_LANGUAGE"  content ="Visual Basic .NET 7.1" >
        
< meta  name ="vs_defaultClientScript"  content ="JavaScript" >
        
< meta  name ="vs_targetSchema"  content ="http://schemas.microsoft.com/intellisense/ie5" >
    
</ HEAD >
    
< body >
        
< form  name ="Form1"  method ="post"  action ="WebForm5.aspx"  id ="Form1" >
< input  type ="hidden"  name ="__VIEWSTATE"  value ="dDwtNjU0MzcyMTk1Ozs+xxQ3E05ag4Me8uTAnG3LTO9zgAg="   />
            
< input  type ="button"  value ="ClickMe"  onclick ="OnClick()" >
            
< span  id ="showMessage2" ></ span >
        
< script  language =JavaScript >    function  OnClick(){showMessage2.innerHTML = ' < h4 > Welcome to Microsoft.NET !</ h4 > '} </ script >

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


我就不具体说了,有兴趣的话,
自己可以仿照贴出来的代码试一下。

KeyWord:  javascript,RegisterClientScriptBlock,RegisterStartupScript,Page,script

转载于:https://www.cnblogs.com/Qizai/archive/2007/08/13/854497.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值