1
我使用jQuery的getScript()
加載單獨的JavaScript文件。這些文件似乎加載正常(我知道這是因爲當我把一個不正確的URL,它會引發錯誤 - 沒有錯誤的正確的URL)。jQuery的getScript()不解決
但是,done()
函數似乎不起作用。控制檯不會記錄「完成」,也不會調用任何函數。
(function($) {
$.when(
$.getScript(templateUrl + "/assets/js/variables.js"),
$.getScript(templateUrl + "/assets/js/functions.js"),
$.getScript(templateUrl + "/assets/js/events.js"),
$.Deferred(function(deferred){
$(deferred.resolve);
})
).done(function(){
console.log("done");
swapBackgroundImgs();
singleLarge();
bindFlexorder();
bindSvgeezy();
bindPlaceholder();
preloadImages();
});
})(jQuery);
你說過的話很有道理。我從[這個堆棧](http://stackoverflow.com/a/11803418/997596)發現了多個getScript(),這就是爲什麼我的代碼是這樣的。我已經移除了'$ .Deferred',但'done()'中仍然沒有被調用。這與jQuery函數包裝器有什麼關係? – Fisu
@tommyf:這不是因爲你已經顯示的代碼中的包裝器,但如果你也在你加載的腳本中使用這個包裝器,那麼是的:這些腳本中的函數將不可訪問,因爲它們將很好地包含在範圍函數中。你必須以某種方式使它們可用,或許通過一個可用作全局變量的單獨共享對象('var App = {};'然後將它們自己添加到'App'),或者讓它們在現有的全局('document.body')將引用傳遞給偵聽器。 –
加載的腳本全部解包。通過web檢查器,我可以看到加載的腳本全部都可以在'XHRs'目錄中看到。他們可以從那裏訪問嗎? – Fisu