Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法...
RegisterStartupScript 方法的兩個可能結構如下:
| ? | RegisterStartupScript (type, key, script) |
| ? | RegisterStartupScript (type, key, script, script tag specification) |
在上例中,您指定了類型 Me.GetType()、關鍵字及包含的腳本,然后是一個值為 True
的布爾值(以便 .NET 自動使用
<script> 標記將腳本嵌入 ASP.NET 頁面中)。
在 Page_Load 事件中使用該代碼會在瀏覽器中生成以下 HTML 代碼
(為簡明起見,已刪除了一些 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 頁面時,請注意,在頁面的底部、表單 (</form>) 的最后,
嵌入了一個 JavaScript 函數。
應為頁面上的所有 JavaScript 指定唯一的關鍵字,這一點十分重要
(這可通過該方法中要求的 key 參數來實現)。
如果多個 JavaScript 具有相同的關鍵字名稱,則只會在頁面中嵌入第一個 JavaScript。
現在,我們通過使用 Page.ClientScript.RegisterClientScriptBlock 方法來創建
一個更好版本的按鈕翻轉示例。
先前的翻轉按鈕示例有一個問題,即當終端用戶的鼠標置于按鈕圖像上時,
必須通過單獨的請求從服務器檢索翻轉圖像。
較好的翻轉按鈕情況是,按鈕的翻轉圖像已經下載并存儲到了瀏覽器的高速緩存中,
以便當終端用戶將鼠標置于按鈕上時,
會立即顯示翻轉圖像。要完成該任務,我們必須構建一個 JavaScript 函數。
以下示例介紹了該 JavaScript 函數以及如何使用
RegisterClientScriptBlock 方法將該函數置于頁面中。就本例而言,代碼分離只需要
一個 Page_Load 事件及一個針對 ImageButton
?服務器控件的按鈕單擊事件。
<%@ 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='是的!請單擊此處!';"); ImageButton1.Attributes.Add("onmouseout", "this.src = MyButton.src;" + "window.status='';"); } protected void ImageButton1_Click(object sender,ImageClickEventArgs e) { Label1.Text = "回發!"; }</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>使用此代碼時,瀏覽器的 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= '是的!請單擊此處!';" ο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>對于該輸出,請注意:通過使用 RegisterClientScriptBlock,JavaScript
?函數緊跟在 HTML 代碼中開啟元素 <form> 的后面。除了使用
RegisterClientScriptBlock 方法添加了 JavaScript 函數外,
我們還添加了一些額外的 JavaScript(只是為了增添點樂趣),
以便在終端用戶將鼠標置于按鈕上時文本會顯示在瀏覽器的狀態欄中。如圖 3 所示。
Page.ClientScript.RegisterStartupScript 與
Page.ClientScript.RegisterClientScriptBlock 之間的區別
我們已為您介紹了兩種不同的可用來將 JavaScript 函數嵌入 ASP.NET 頁面的方法,
那么,二者之間有何不同呢?主要區別在于,RegisterStartupScript
方法是將 JavaScript 嵌入到 ASP.NET 頁面的底部,恰好位于關閉元素 </form>
?的前面。RegisterClientScriptBlock 方法是將 JavaScript 嵌入到
頁面中開啟元素 <form> 的緊后面。那么,這有何不同呢?正如我們將要看到的,
這有很大的不同。
就此列舉一例,以下是在頁面加載到瀏覽器時,將焦點置于該頁面上的一個文本框中的方法 -
?使用利用了 RegisterStartupScript 方法的 Visual Basic:
Page.ClientScript.RegisterStartupScript(Me.GetType(), "Testing", _ "document.forms[0]['TextBox1'].focus();", True)由于在瀏覽器運行到頁面底部并執行此小段 JavaScript 時,就已生成了頁面上的文本框,
并已將其放到了頁面中,因此,此方法運行正常。但是,
如果不按照上述方法,而編寫如下代碼(使用 RegisterClientScriptBlock 方法):
Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "Testing", _ "document.forms[0]['TextBox1'].focus();", True)文本框控件將不會獲得焦點,且會在頁面上生成一個 JavaScript 錯誤(如圖 4 所示)。
圖 4. 執行 JavaScript 時出錯
出錯的原因在于,瀏覽器將先遇到 JavaScript,而后文本框才會出現在頁面中。
因此,JavaScript 將無法找到 TextBox1。
?
?
轉至于http://www.cnblogs.com/zhuawang/archive/2007/09/04/881107.html
轉載于:https://www.cnblogs.com/chenmo0202032220/archive/2009/03/26/1422106.html
總結
以上是生活随笔為你收集整理的Page.ClientScript.RegisterStartupScript() 方法与Page.ClientScript.RegisterClientScriptBlock() 方法...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 部署承载于 Internet 信息服务中
- 下一篇: 淘宝登货员1.02(重要升级)