Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法...
RegisterStartupScript 方法的兩個(gè)可能結(jié)構(gòu)如下:
| ? | RegisterStartupScript (type, key, script) |
| ? | RegisterStartupScript (type, key, script, script tag specification) |
在上例中,您指定了類型 Me.GetType()、關(guān)鍵字及包含的腳本,然后是一個(gè)值為 True
的布爾值(以便 .NET 自動(dòng)使用
<script> 標(biāo)記將腳本嵌入 ASP.NET 頁面中)。
在 Page_Load 事件中使用該代碼會(huì)在瀏覽器中生成以下 HTML 代碼
(為簡(jiǎn)明起見,已刪除了一些 HTML 代碼):
<html xmlns="http://www.w3.org/1999/xhtml" ><head><title> 使用 JavaScript</title></head><body> <form name="form1" method="post" action="Default.aspx" id="form1"> <div><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJMTM4ODA1MjE5D2QWAgIED2QWBAIBDw9kFgIeB29uY2xpY2s FDEFsZXJ0SGVsbG8oKWQCAw8PZBYCHwAFDEFsZXJ0SGVsbG8oKWRk+DQIaJpw5 A7pyhzP8dxf/JGUSbA=" /></div> <div><input type="submit" name="Button1" value="Button" οnclick="AlertHello();" id="Button1" /> <input type="submit" name="Button2" value="Button" οnclick="AlertHello();" id="Button2" /></div> <div><input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK4yNWFBwKM54rGBgK7q7GGCHwBEr6DyGutQ/ egvNrB3OYhCwM4" /></div><script type="text/javascript"> <!--function AlertHello() { alert('你好,ASP.NET'); }// --> </script></form></body></html>使用該 ASP.NET 頁面時(shí),請(qǐng)注意,在頁面的底部、表單 (</form>) 的最后,
嵌入了一個(gè) JavaScript 函數(shù)。
應(yīng)為頁面上的所有 JavaScript 指定唯一的關(guān)鍵字,這一點(diǎn)十分重要
(這可通過該方法中要求的 key 參數(shù)來實(shí)現(xiàn))。
如果多個(gè) JavaScript 具有相同的關(guān)鍵字名稱,則只會(huì)在頁面中嵌入第一個(gè) JavaScript。
現(xiàn)在,我們通過使用 Page.ClientScript.RegisterClientScriptBlock 方法來創(chuàng)建
一個(gè)更好版本的按鈕翻轉(zhuǎn)示例。
先前的翻轉(zhuǎn)按鈕示例有一個(gè)問題,即當(dāng)終端用戶的鼠標(biāo)置于按鈕圖像上時(shí),
必須通過單獨(dú)的請(qǐng)求從服務(wù)器檢索翻轉(zhuǎn)圖像。
較好的翻轉(zhuǎn)按鈕情況是,按鈕的翻轉(zhuǎn)圖像已經(jīng)下載并存儲(chǔ)到了瀏覽器的高速緩存中,
以便當(dāng)終端用戶將鼠標(biāo)置于按鈕上時(shí),
會(huì)立即顯示翻轉(zhuǎn)圖像。要完成該任務(wù),我們必須構(gòu)建一個(gè) JavaScript 函數(shù)。
以下示例介紹了該 JavaScript 函數(shù)以及如何使用
RegisterClientScriptBlock 方法將該函數(shù)置于頁面中。就本例而言,代碼分離只需要
一個(gè) Page_Load 事件及一個(gè)針對(duì) ImageButton
?服務(wù)器控件的按鈕單擊事件。
<%@ Page Language="C#" %><script runat="server"> protected void Page_Load(object sender, EventArgs e) { Page.RegisterClientScriptBlock("MyScript", _ "if (document.images) {" + "MyButton = new Image;" + "MyButtonShaded = new Image;" + "MyButton.src = 'button1.gif;" + "MyButtonShaded.src = 'button2.gif;" + "}" + "else {" + "MyButton = '';" + "MyButtonShaded = '';" + "}", true); ImageButton1.Attributes.Add("onmouseover", "this.src = MyButtonShaded.src;" + "window.status='是的!請(qǐng)單擊此處!';"); ImageButton1.Attributes.Add("onmouseout", "this.src = MyButton.src;" + "window.status='';"); } protected void ImageButton1_Click(object sender,ImageClickEventArgs e) { Label1.Text = "回發(fā)!"; }</script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>使用 JavaScript</title></head><body> <form id="form1" runat="server"> <div> <p> <asp:ImageButton id="ImageButton1" οnmοuseοver="this.src='button2.gif'" οnclick="ImageButton1_Click" οnmοuseοut="this.src='button1.gif'" runat="server" ImageUrl="button1.gif"></asp:ImageButton> </p> <p> <asp:Label id="Label1" runat="server" /> </p> </div> </form></body></html>使用此代碼時(shí),瀏覽器的 HTML 輸出將如下所示:
<html xmlns="http://www.w3.org/1999/xhtml" > <head id="Head1"><title> 使用 JavaScript</title></head><body> <form name="form1" method="post" action="Default.aspx" id="form1"> <div><input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTcyMTcwOTQ2NA9kFgICBA9kFgICAQ8PZBYEHgtvbm1 vdXNlb3ZlcgVCdGhpcy5zcmMgPSBNeUJ1dHRvblNoYWRlZC5zcmM7d2luZ G93LnN0YXR1cz0nT2ggWWVzISBDbGljayBoZXJlISc7Hgpvbm1vdXNlb3V 0BSl0aGlzLnNyYyA9IE15QnV0dG9uLnNyYzt3aW5kb3cuc3RhdHVzPScnO 2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDEltYWd lQnV0dG9uMXDJ4zl4FNylcdE+kep0e5wzi14T" /></div> <script type="text/javascript"><!--if (document.images) {MyButton = new Image;MyButtonShaded = new Image; MyButton.src = 'button1.gif';MyButtonShaded.src = 'button2.gif';} else {MyButton= '';MyButtonShaded = '';}// --></script> <div> <p> <input type="image" name="ImageButton1" id="ImageButton1" οnmοuseοver="this.src = MyButtonShaded.src;window.status= '是的!請(qǐng)單擊此處!';" οnmοuseοut="this.src = MyButton.src;window.status='';" src="button1.gif" style="border-width:0px;" /> </p> <p><span id="Label1"></span></p> </div> <div> <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgLhoLy4DwLSwpnTCEKaKJJN3KmLU7TP4vwT5VSKMT+M" /> </div></form></body></html>對(duì)于該輸出,請(qǐng)注意:通過使用 RegisterClientScriptBlock,JavaScript
?函數(shù)緊跟在 HTML 代碼中開啟元素 <form> 的后面。除了使用
RegisterClientScriptBlock 方法添加了 JavaScript 函數(shù)外,
我們還添加了一些額外的 JavaScript(只是為了增添點(diǎn)樂趣),
以便在終端用戶將鼠標(biāo)置于按鈕上時(shí)文本會(huì)顯示在瀏覽器的狀態(tài)欄中。如圖 3 所示。
Page.ClientScript.RegisterStartupScript 與
Page.ClientScript.RegisterClientScriptBlock 之間的區(qū)別
我們已為您介紹了兩種不同的可用來將 JavaScript 函數(shù)嵌入 ASP.NET 頁面的方法,
那么,二者之間有何不同呢?主要區(qū)別在于,RegisterStartupScript
方法是將 JavaScript 嵌入到 ASP.NET 頁面的底部,恰好位于關(guān)閉元素 </form>
?的前面。RegisterClientScriptBlock 方法是將 JavaScript 嵌入到
頁面中開啟元素 <form> 的緊后面。那么,這有何不同呢?正如我們將要看到的,
這有很大的不同。
就此列舉一例,以下是在頁面加載到瀏覽器時(shí),將焦點(diǎn)置于該頁面上的一個(gè)文本框中的方法 -
?使用利用了 RegisterStartupScript 方法的 Visual Basic:
Page.ClientScript.RegisterStartupScript(Me.GetType(), "Testing", _ "document.forms[0]['TextBox1'].focus();", True)由于在瀏覽器運(yùn)行到頁面底部并執(zhí)行此小段 JavaScript 時(shí),就已生成了頁面上的文本框,
并已將其放到了頁面中,因此,此方法運(yùn)行正常。但是,
如果不按照上述方法,而編寫如下代碼(使用 RegisterClientScriptBlock 方法):
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "Testing", _ "document.forms[0]['TextBox1'].focus();", True)文本框控件將不會(huì)獲得焦點(diǎn),且會(huì)在頁面上生成一個(gè) JavaScript 錯(cuò)誤(如圖 4 所示)。
圖 4. 執(zhí)行 JavaScript 時(shí)出錯(cuò)
出錯(cuò)的原因在于,瀏覽器將先遇到 JavaScript,而后文本框才會(huì)出現(xiàn)在頁面中。
因此,JavaScript 將無法找到 TextBox1。
?
?
轉(zhuǎn)至于http://www.cnblogs.com/zhuawang/archive/2007/09/04/881107.html
轉(zhuǎn)載于:https://www.cnblogs.com/chenmo0202032220/archive/2009/03/26/1422106.html
總結(jié)
以上是生活随笔為你收集整理的Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部署承载于 Internet 信息服务中
- 下一篇: 淘宝登货员1.02(重要升级)