2010-07-07 50 views
0

如何將我的javascript文件作爲嵌入資源添加到頁面之後 ajax javascript已在頁面上? NB想要動態地完成這部分代碼包含在usercontrol中。將JavaScript文件從WebReousrce註冊爲aspx頁

在aspx頁面:ScriptManager的

代碼:大會:WebResource( 「Functions.js」, 「文/ JavaScript的」)

代碼:的OnPreRender:

ScriptManager.RegisterClientScriptResource(ME。頁,Me.GetType()。BaseType,「Functions.js」)

此代碼成功地將我的JavaScript代碼添加到頁面,但沒有AJAX JavaScript後,所以不是所有的功能工作正確。

謝謝,戴夫

回答

1

你可以使用GetWebResourceUrl的()來獲取路徑字符串到您的嵌入式腳本,它應該在頁面(大概就像websresource.axd?XXXX)。然後使用RegisterStartupScript手動插入指向路徑的腳本標籤,以強制將其添加到頁面的末尾。類似下面...

path = ScriptManager.GetWebResourceUrl(this.GetType(), "Fucntion.js"); 
ScriptManger.RegisterStartupScript(this.GetType(), "MyScript", "<script type=\"text/javascript\" src=\"" + path + "\"/>"); 

從你也可以嘗試在預渲染事件後加入你的腳本加載過程,例如服務器。或從客戶端可以換你的腳本到負載,以便它不運行的代碼,直到最後一刻,如下...

function RunOnLoad() 
{ 

    button.onclick = function() 
    { 
     alert("Clicked!"); 
    } 

} 
window.onload = RunOnLoad; 
+0

曾嘗試以下,它管理註冊的JavaScript文件,但出現在ajax javascripts之前的網頁中,因此功能不起作用,有沒有辦法指定順序,即向後添加它。 ScriptManager.RegisterStartupScript(Me.Page,Me.GetType,pKey,strJava,False) – Dave 2010-07-12 11:03:46

+0

您是否可以控制添加Ajax腳本的時間,因爲我相信這只是添加的順序?您也可以修改您包含的腳本文件,以防止其立即運行。例如附加到你的腳本onload或做settimeout? – 2010-07-12 11:19:35

+0

ajax腳本是由ScriptManager自動添加的,所以不需要控制何時添加它。 javascript文件只有被用戶事件調用的函數,例如按鈕點擊,但是它的代碼需要引用由ajax代碼創建的ajax對象,因此如果在創建ojbect之前添加了js文件,則會出現null refrernce錯誤 – Dave 2010-07-12 12:43:18