[英]How do I get access to the ASP.NET Client-Side API at all times?
一些背景。 該項目是使用ASP.NET AJAX Extensions 1.0的VS 2005 Web應用程序。
問題,如何在不使用ScriptManager控件的情況下引用Scriptmanager控件使用的JavaScript文件,或者如何更早地加載ScriptManager JS文件(我認為這不可能,因為ScriptManager必須在服務器中 - 形式標簽)?
我在母版頁中有一個ScriptManager控件,但很多時候,有些頁面只是很好的非異步回發,我在腳本管理器加載之前創建了客戶端對象。 現在我知道在開始時在標記和CSS的末尾附近加載腳本是一個好習慣,但在我的情況下,我創建的一些腳本需要在之前,通常在head標簽中,因為例如我將有一個實例化客戶端對象的轉發器。
所以這就是我想要的:
//我的腳本
現在,這就是我解決這個問題的方法:
(function() {
var myInterval;
myInterval = setInterval(function() {
if (!Type) {
return;
}
clearInterval(myInterval);
Type.registerNamespace("Awesome");
Awesome.Widget = function() {
var _this = this;
this.myProperty = 'This is awesome';
}
}, 40);
})();
或者我這樣做:
var Awesome = {};
Awesome.Widget = function {
/// Awesome code.
}
最好不要加載這些腳本兩次,因為ScriptManager控件將在某些時候呈現,因為它在我的MasterPage中。
也許問題是我以錯誤的方式解決這個問題。 任何幫助是極大的贊賞。
當您使用MS AJAX控件時,您可以利用自動連接的pageLoad函數名稱,並將代碼放在那里。
你的pageLoad函數是在文檔准備就緒,所有內容都被加載的時候被調用的,你最好把DOM放到你心中(這有點像jQuery的document.ready函數,但實際上稍后會觸發)。
可以在AJAX客戶端生命周期事件頁面上找到更多詳細信息。
function pageLoad(sender, args){
Type.registerNamespace("Awesome");
Awesome.Widget = function() {
var _this = this;
this.myProperty = 'This is awesome';
}
}
如果您對文檔准備就緒並不感興趣,但可以滿足自己所有正在加載和解析的腳本的內容,那么您可以將其掛鈎到init事件中 。
// Attach a handler to the init event.
Sys.Application.add_init(applicationInitHandler);
function applicationInitHandler() {
Type.registerNamespace("Awesome");
Awesome.Widget = function() {
var _this = this;
this.myProperty = 'This is awesome';
}
}
我不確定我是否按照您的問題進行操作,但希望這會有所幫助。 確保您可以訪問ASP.NET AJAX客戶端庫的標准方法是將ScriptManager控件添加到母版頁,然后在需要時在內容頁面,用戶控件和Web部件中使用ScriptManagerProxy控件。
ScriptManagerProxy控件中的設置與母版頁中ScriptManager的設置相結合,以確保頁面可以使用正確的JavaScript代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.