2012-11-28 185 views
0

我目前試圖解決這個問題的方法是在$(document).ready()上加載對象。然後使用$(window).load()運行其餘的腳本。不過,我仍然最終添加了0.5秒的延遲,以確保該對象完全加載,因爲它從2個Ajax調用中檢索數據。有沒有方法在加載DOM之前加載對象?

有沒有更好的方式在DOM加載之前加載對象或同時加載對象並獲取數據,然後調用其餘函數?

document.ready = function(){ 
object.initall(); 
}; 

initall()函數調用從兩個不同服務獲取數據的兩種方法。

window.onload = function() { 
setTimeout(function(){ 
    object.loadEventTable(); 
    object.loadChart();  
    $('#uid').text(object.lData.header.uid);   
},500); 
}; 
+0

dom不需要加載任何東西,它所做的只是確保在初始文檔被分析後運行回調。如果'.initall'沒有嘗試選擇文檔中的元素,那麼文檔是否準備就緒並不重要 – Esailija

+0

謝謝大家的迴應......它實際上給了我一個關於如何解決這個問題的好主意。 yey! –

回答

1

我想你可以使它成爲一個函數,並將函數調用放在頁面的開始部分。可在你的身體標記

object.loadEventTable(); 
object.loadChart();  
window.onload = function() { 
setTimeout(function(){ 
    $('#uid').text(object.lData.header.uid);   
},500); 
}; 
+0

添加一個函數並在開始時調用它會使$(「#uid」)文本失敗。 – TryingToImprove

+1

肯定會失敗 –

+0

這是我解決它的一種方式,除了$(「#uid」)被轉移到另一個功能作爲回調。該功能實際上是加載內容,並作爲回撥,我將其設置爲適當的UID。謝謝! –

0

最快的方法是產生「響應」服務器端,並直接把它放到你的代碼,因此單獨調用是沒有必要的開幕式。

相關問題