Asp.net-Ajax
Sys.Application.add_load()與$(文件)。就緒()與頁面載入()
我有了一些JavaScript需要在頁面載入執行頁面。說JavaScript需要找到一個ServerControl,它與$發現確實()的客戶端組件。
當然,如果我直接發我的程式碼到頁面上,它執行的頁面被讀取,並且失敗,因為沒有這取決於是尚未初始化。
如果我把我的程式碼頁面載入()函式中,它執行得很好,因為asp.net自動線了名為pageLoad的任何功能的onload處理器()。問題是,我真的不喜歡的頁面載入()解決方案 - 主要是因為它是一個單一的全球名稱。如果我犯使用頁面載入()一些程式碼,我只知道,其他一些程序員會複製的方式,地方不合適,我們將與包括兩個或多個不同的頁面載入()函式的頁面結束了,其結果將是一堆,將採取永遠追查神秘的錯誤。
於是,我把我的程式碼。就緒傳遞給jQuery的$(文件)的匿名函式中()。這種失敗,因為它執行的ServerControl的客戶端組件存在了。
於是,我把我的程式碼()由Sys.Application.add_load傳遞給匿名函式內部。這也失敗了,因為Sys系統是不明確的。
所以,我終於看中把我的程式碼中Sys.Application.add_load(),然後把一個由$(文件)稱為.ready函式內的()。這工作,但它提供了幾乎一樣多燒心為頁面載入()。
<script type="text/javascript"> $(document).ready(function(){ Sys.Application.add_load(function(){ var component = $find(<clientid>); if (component) { <do something> } }); }); </script>必須有處理這更好的方式。
有任何想法嗎?
如果你有在後台程式碼控制,您可以通過類似JavaScript的註冊在啟動時執行:
this.Page.ClientScript.RegisterStartupScript( this.GetType(), "StartupScript", "Sys.Application.add_load(function() { functioncall(); });", true);只要你的組件已經通過Sys.Application.add_init載入()你應該罰款…