使用较大的 JavaScript 函数

既然我们可以在 HTML 元素内部嵌入部分 JavaScript,甚至可以以动态方式使用 JavaScript 和 Web 服务器控件,那么如何将全部 JavaScript 函数置于您的代码中呢?

可通过多种方法来完成此任务,我们将介绍几种可在 ASP.NET 代码中使用的较为常见的方法。在本文中,我们将介绍如何使用新的 Page.ClientScript 属性。在 ASP.NET 2.0 之前,您需要使用 RegisterStartupScriptRegisterClientScriptBlock 方法。现在,这两个方法已被淘汰。在 ASP.NET 1.x 中注册脚本的两种可能方法均需要使用一组关键字/脚本参数。由于涉及到了两个独立的方法,因此极有可能会出现一些关键字名称冲突。Page.ClientScript 属性本身就可以完成所有的脚本注册,从而使您的代码少出错。

Page.ClientScript.RegisterStartupScript() 方法


最初可用的选项之一就是使用一个可实现此功能的 .NET 类来注册脚本块。第一个是 RegisterStartupScript 方法。当您有一个想要在页面加载时启动的 JavaScript 函数时,最好使用该类。就此列举一例,在 Visual Studio 2005 中创建一个包含两个按钮的 ASP.NET 页面。Button1Button2 分别为这两个按钮的 ID。然后,在 Page_Load 事件内部嵌入以下代码。
VB.NET

使用较大的 JavaScript 函数 Page.ClientScript.RegisterStartupScript( Me .GetType(),  " MyScript " , _
使用较大的 JavaScript 函数   
" function AlertHello() { alert('你好,ASP.NET'); } " True )
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数Button1.Attributes(
" onclick " =   " AlertHello() "
使用较大的 JavaScript 函数Button2.Attributes(
" onclick " =   " AlertHello() "
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数

C#.NET
使用较大的 JavaScript 函数 Page.ClientScript.RegisterStartupScript( this .GetType(),  " MyScript " ,
使用较大的 JavaScript 函数   
" function AlertHello() { alert('你好,ASP.NET'); } " true );
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数Button1.Attributes[
" onclick " =   " AlertHello() " ;
使用较大的 JavaScript 函数Button2.Attributes[
" onclick " =   " AlertHello() " ;
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数

RegisterStartupScript 方法的两个可能结构如下:

RegisterStartupScript (type, key, script)

RegisterStartupScript (type, key, script, script tag specification)



在上例中,您指定了类型 Me.GetType()(---the type of the script to register----)、关键字及包含的脚本,然后是一个值为 True 的布尔值(以便 .NET 自动使用 <script> 标记将脚本嵌入 ASP.NET 页面中)。
应为页面上的所有 JavaScript 指定唯一的关键字,这一点十分重要(这可通过该方法中要求的 key 参数来实现)。如果多个 JavaScript 具有相同的关键字名称,则只会在页面中嵌入第一个 JavaScript。
Page_Load 事件中使用该代码会在浏览器中生成以下 HTML 代码(为简明起见,已删除了一些 HTML 代码):

使用较大的 JavaScript 函数 < html  xmlns ="http://www.w3.org/1999/xhtml"   >
使用较大的 JavaScript 函数
< head >< title >
使用较大的 JavaScript 函数   使用 JavaScript
使用较大的 JavaScript 函数
</ title ></ head >
使用较大的 JavaScript 函数
< body >
使用较大的 JavaScript 函数    
< form  name ="form1"  method ="post"  action ="Default.aspx"  id ="form1" >
使用较大的 JavaScript 函数
< div >
使用较大的 JavaScript 函数
< input  type ="hidden"  name ="__VIEWSTATE"  id ="__VIEWSTATE"  
使用较大的 JavaScript 函数 value
="/wEPDwUJMTM4ODA1MjE5D2QWAgIED2QWBAIBDw9kFgIeB29uY2xpY2s
使用较大的 JavaScript 函数 FDEFsZXJ0SGVsbG8oKWQCAw8PZBYCHwAFDEFsZXJ0SGVsbG8oKWRk+DQIaJpw5
使用较大的 JavaScript 函数 A7pyhzP8dxf/JGUSbA="
  />
使用较大的 JavaScript 函数
</ div >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数    
< div >
使用较大的 JavaScript 函数        
< input  type ="submit"  name ="Button1"  value ="Button"  
使用较大的 JavaScript 函数         onclick
="AlertHello();"  id ="Button1"   />
使用较大的 JavaScript 函数        
< input  type ="submit"  name ="Button2"  value ="Button"  
使用较大的 JavaScript 函数         onclick
="AlertHello();"  id ="Button2"   />
使用较大的 JavaScript 函数    
</ div >
使用较大的 JavaScript 函数    
使用较大的 JavaScript 函数
< div >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数   
< input  type ="hidden"  name ="__EVENTVALIDATION"  id ="__EVENTVALIDATION"  
使用较大的 JavaScript 函数    value
="/wEWAwK4yNWFBwKM54rGBgK7q7GGCHwBEr6DyGutQ/egvNrB3OYhCwM4"   />
使用较大的 JavaScript 函数
</ div >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数
< script  type ="text/javascript" >
使用较大的 JavaScript 函数
<!--
使用较大的 JavaScript 函数
function AlertHello() { alert('你好,ASP.NET'); }// -->
使用较大的 JavaScript 函数
</ script >
使用较大的 JavaScript 函数
</ form >
使用较大的 JavaScript 函数
</ body >
使用较大的 JavaScript 函数
</ html >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数

使用该 ASP.NET 页面时,请注意,在页面的底部、表单 (</form>) 的最后,嵌入了一个 JavaScript 函数。

应为页面上的所有 JavaScript 指定唯一的关键字,这一点十分重要(这可通过该方法中要求的 key 参数来实现)。如果多个 JavaScript 具有相同的关键字名称,则只会在页面中嵌入第一个 JavaScript。

Page.ClientScript.RegisterClientScriptBlock() 方法

现在,我们通过使用 Page.ClientScript.RegisterClientScriptBlock 方法来创建一个更好版本的按钮翻转示例。先前的翻转按钮示例有一个问题,即当终端用户的鼠标置于按钮图像上时,必须通过单独的请求从服务器检索翻转图像。较好的翻转按钮情况是,按钮的翻转图像已经下载并存储到了浏览器的高速缓存中,以便当终端用户将鼠标置于按钮上时,会立即显示翻转图像。要完成该任务,我们必须构建一个 JavaScript 函数。以下示例介绍了该 JavaScript 函数以及如何使用 RegisterClientScriptBlock 方法将该函数置于页面中。就本例而言,代码分离只需要一个 Page_Load 事件及一个针对 ImageButton 服务器控件的按钮单击事件。

使用较大的 JavaScript 函数 <% @ Page Language="C#"  %>
使用较大的 JavaScript 函数
< script  runat ="server" >    
使用较大的 JavaScript 函数protected 
void Page_Load(object sender, EventArgs e)
使用较大的 JavaScript 函数
{
使用较大的 JavaScript 函数       Page.RegisterClientScriptBlock(
"MyScript", _
使用较大的 JavaScript 函数           
"if (document.images) {" +
使用较大的 JavaScript 函数           
"MyButton = new Image;" +
使用较大的 JavaScript 函数           
"MyButtonShaded = new Image;" +
使用较大的 JavaScript 函数           
"MyButton.src = 'button1.gif;" +
使用较大的 JavaScript 函数           
"MyButtonShaded.src = 'button2.gif;" +
使用较大的 JavaScript 函数           
"}" +
使用较大的 JavaScript 函数           
"else {" +
使用较大的 JavaScript 函数           
"MyButton = '';" +
使用较大的 JavaScript 函数           
"MyButtonShaded = '';" +
使用较大的 JavaScript 函数           
"}"true);
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数       ImageButton1.Attributes.Add(
"onmouseover",
使用较大的 JavaScript 函数          
"this.src = MyButtonShaded.src;" +
使用较大的 JavaScript 函数          
"window.status='是的!请单击此处!';");
使用较大的 JavaScript 函数       ImageButton1.Attributes.Add(
"onmouseout",
使用较大的 JavaScript 函数          
"this.src = MyButton.src;" +
使用较大的 JavaScript 函数          
"window.status='';");
使用较大的 JavaScript 函数    }

使用较大的 JavaScript 函数 
使用较大的 JavaScript 函数  protected 
void ImageButton1_Click(object sender, ImageClickEventArgs e)
使用较大的 JavaScript 函数  
{
使用较大的 JavaScript 函数     Label1.Text 
= "回发!";
使用较大的 JavaScript 函数  }

使用较大的 JavaScript 函数
</ script >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数
< html  xmlns ="http://www.w3.org/1999/xhtml"   >
使用较大的 JavaScript 函数
< head  runat ="server" >
使用较大的 JavaScript 函数    
< title > 使用 JavaScript </ title >
使用较大的 JavaScript 函数
</ head >
使用较大的 JavaScript 函数
< body >
使用较大的 JavaScript 函数    
< form  id ="form1"  runat ="server" >
使用较大的 JavaScript 函数    
< div >
使用较大的 JavaScript 函数    
< p >
使用较大的 JavaScript 函数       
< asp:ImageButton  id ="ImageButton1"  
使用较大的 JavaScript 函数        onmouseover
="this.src='button2.gif'"  
使用较大的 JavaScript 函数        onclick
="ImageButton1_Click"  
使用较大的 JavaScript 函数        onmouseout
="this.src='button1.gif'"  runat ="server"  
使用较大的 JavaScript 函数        ImageUrl
="button1.gif" ></ asp:ImageButton >
使用较大的 JavaScript 函数    
</ p >
使用较大的 JavaScript 函数    
< p >
使用较大的 JavaScript 函数       
< asp:Label  id ="Label1"  runat ="server"   />
使用较大的 JavaScript 函数    
</ p >
使用较大的 JavaScript 函数    
</ div >
使用较大的 JavaScript 函数    
</ form >
使用较大的 JavaScript 函数
</ body >
使用较大的 JavaScript 函数
</ html >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数

 使用此代码时,浏览器的 HTML 输出将如下所示:
使用较大的 JavaScript 函数 < html  xmlns ="http://www.w3.org/1999/xhtml"   >
使用较大的 JavaScript 函数
< head  id ="Head1" >< title >
使用较大的 JavaScript 函数   使用 JavaScript
使用较大的 JavaScript 函数
</ title ></ head >
使用较大的 JavaScript 函数
< body >
使用较大的 JavaScript 函数    
< form  name ="form1"  method ="post"  action ="Default.aspx"  id ="form1" >
使用较大的 JavaScript 函数
< div >
使用较大的 JavaScript 函数
< input  type ="hidden"  name ="__VIEWSTATE"  id ="__VIEWSTATE"  
使用较大的 JavaScript 函数 value
="/wEPDwUKMTcyMTcwOTQ2NA9kFgICBA9kFgICAQ8PZBYEHgtvbm1
使用较大的 JavaScript 函数 vdXNlb3ZlcgVCdGhpcy5zcmMgPSBNeUJ1dHRvblNoYWRlZC5zcmM7d2luZ
使用较大的 JavaScript 函数 G93LnN0YXR1cz0nT2ggWWVzISBDbGljayBoZXJlISc7Hgpvbm1vdXNlb3V
使用较大的 JavaScript 函数 0BSl0aGlzLnNyYyA9IE15QnV0dG9uLnNyYzt3aW5kb3cuc3RhdHVzPScnO
使用较大的 JavaScript 函数 2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDEltYWd
使用较大的 JavaScript 函数 lQnV0dG9uMXDJ4zl4FNylcdE+kep0e5wzi14T"
  />
使用较大的 JavaScript 函数
</ div >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数
< script  type ="text/javascript" >
使用较大的 JavaScript 函数
<!--
使用较大的 JavaScript 函数
if  (document.images) 
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数
{MyButton = new Image;MyButtonShaded = new Image;
使用较大的 JavaScript 函数MyButton.src 
= 'button1.gif';MyButtonShaded.src = 'button2.gif';}

使用较大的 JavaScript 函数
使用较大的 JavaScript 函数
else 
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数
{MyButton= '';MyButtonShaded = '';}// -->
使用较大的 JavaScript 函数
</ script >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数    
< div >
使用较大的 JavaScript 函数        
< p >
使用较大的 JavaScript 函数            
< input  type ="image"  name ="ImageButton1"  id ="ImageButton1"  
使用较大的 JavaScript 函数             onmouseover
="this.src = MyButtonShaded.src;window.status=
使用较大的 JavaScript 函数               '是的!请单击此处!';"
 
使用较大的 JavaScript 函数             onmouseout
="this.src = MyButton.src;window.status='';"  
使用较大的 JavaScript 函数             src
="button1.gif"  style ="border-width:0px;"   />
使用较大的 JavaScript 函数        
</ p >
使用较大的 JavaScript 函数        
< p >
使用较大的 JavaScript 函数            
< span  id ="Label1" ></ span >
使用较大的 JavaScript 函数        
</ p >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数    
</ div >
使用较大的 JavaScript 函数    
使用较大的 JavaScript 函数
< div >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数   
< input  type ="hidden"  name ="__EVENTVALIDATION"  id ="__EVENTVALIDATION"  
使用较大的 JavaScript 函数    value
="/wEWAgLhoLy4DwLSwpnTCEKaKJJN3KmLU7TP4vwT5VSKMT+M"   />
使用较大的 JavaScript 函数
</ div ></ form >
使用较大的 JavaScript 函数
</ body >
使用较大的 JavaScript 函数
</ html >
使用较大的 JavaScript 函数
使用较大的 JavaScript 函数

对于该输出,请注意:通过使用 RegisterClientScriptBlock,JavaScript 函数紧跟在 HTML 代码中开启元素 <form> 的后面。除了使用 RegisterClientScriptBlock 方法添加了 JavaScript 函数外,我们还添加了一些额外的 JavaScript(只是为了增添点乐趣),以便在终端用户将鼠标置于按钮上时文本会显示在浏览器的状态栏中。如图 3 所示。

使用较大的 JavaScript 函数

对于所有此类 JavaScript 来说,最值得高兴的就是,对服务器端事件的普通回发将正常工作。在本例中单击 ImageButton 将产生一个回发,其中更改了标签服务器控件的 text 属性。


你可能感兴趣的:(JavaScript)