2010-07-26

[Asp.Net]Page.ClientScript.RegisterStartupScript 和 Page.ClientScript.RegisterClientScriptBlock 之間的差異

資料來源:[節錄] http://msdn.microsoft.com/zh-tw/library/dd182016.aspx
Page.ClientScript.RegisterStartupScript 和 Page.ClientScript.RegisterClientScriptBlock 之間的差異
兩種方法都能將 JavaScript 函式至入 ASP.NET 網頁,但這兩者到底有何不同呢?主要的不同之處在於 RegisterStartupScript 方法會將 JavaScript 置入 ASP.NET 網頁中,位置是結束 元件的正上方。而 RegisterClientScriptBlock 方法則是把 JavaScript 直接放在網頁的
元件開頭處。但這兩者間有何差異呢?接下來您會瞭解其中的差異可大了。


打個比方,如果您在 Visual Basic 中使用 RegisterStartupScript 方法,可以使用下列方式,使焦點在網頁載入瀏覽器後放在網頁的文字方塊內:

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 錯誤。
原因在於瀏覽器在網頁中先遇到 JavaScript,然後才是文字方塊,造成 JavaScript 找不到 TextBox1。

沒有留言:

張貼留言