2012-07-06 22 views
0

我有一個困境 - 我的JavaScript代碼需要在DOM準備好時執行。但是,同時我需要能夠連接到另一個腳本的加載事件。所以假設我需要這樣的東西:document.ready和ExecuteOrDelayScriptLoaded

ExecuteOrDelayUntilScriptLoaded(getData, "sp.js"); 


function getData() { 


     (document.ready(function() { 

      //my code to get data from sharepoint list. 
     })); 

} 

只有後者似乎不工作。

請建議!

回答

1

嘗試

$(document).ready(function() { 
    $.getScript('sp.js', function() { 
     //your code to get data from sharepoint list. 
    }); 
}); 

在過去的腳本加載更精確的控制,儘量腳本加載喜歡簡單,重量輕yepnope.js或更復雜的LABjs。

+0

這不是一個很好的解決方案。你很可能會加載兩次sp.js。 – hamboy 2013-08-09 19:46:23

+0

@hamboy文檔上的ready事件應該只運行一次,$ .getScript()應該只加載腳本一次。如果其中一個沒有這樣工作,它分別是瀏覽器或jQuery錯誤。 – 2013-08-21 15:52:47

3

爲什麼不這樣做呢?

$(document).ready(function() { 
    ExecuteOrDelayUntilScriptLoaded(function getData(){ 
     //your code to get data from sharepoint list. 
    }, "sp.js"); 
}); 
+0

如果jQuery是不可用,則可以使用_spBodyOnLoadFunctionNames – hamboy 2013-08-09 19:48:35

0

如果您使用jQuery,MooTools或任何其他庫 - 您可以掛接一個標準函數,檢查DOM和您的資產是否已加載。

舉例來說,在jQuery的: http://api.jquery.com/ready/