最早用js實現變換圖片模組時,遇到的問題,現在偶然間發現了原因。當時,出現的問題是找不到document上的元素。而原因就是“
我們已為您介紹了兩種不同的可用來將 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 錯誤。
出錯的原因在於,瀏覽器將先遇到 JavaScript,而後文字框才會出現在頁面中。因此,JavaScript 將無法找到 TextBox1。”
如果您在asp.net中使用指令碼,請記得注意這個差別。