2016-05-02 46 views
1

我試圖添加一個加載模式到HTML頁面,而一些JavaScript正在執行。我的問題是,當這些腳本完成執行時我無法注意到。JavaScript回調,當頁面中的一些腳本已執行

我已經試過:

$.when(
    $.getScript("/script1.js"), 
    $.getScript("/script2.js"), 
    $.getScript("/script3.js"), 
    $.Deferred(function(deferred){ 
     $(deferred.resolve); 
    }) 
).done(function(){ 
    console.log('everything have been executed!'); 
}); 

但隨着getScript JQuery documentation說:腳本已經加載

回調被觸發,但不一定執行。

有沒有辦法爲這樣的事件設置回調?

回答

0

您可以嘗試使用$ .ajax來加載腳本。

$.ajax({ 
    async:false, 
    url:'/script.js', 
    type:'GET', 
    data:null, 
    dataType:'script', 
    success:function(){ 
     console.log('Executed') 
    } 
}); 

異步需要是假的,所以它加載和第一執行腳本,運行成功功能之前。

+2

'$ .getScript'實際上使用'$ .ajax'方法。這只是一個簡寫。 OP的問題顯然不是加載腳本。它知道是否執行了惰性加載腳本中的函數。 – DavidDomain

+0

@DavidDomain異步是我的答案,這意味着它首先加載並執行腳本,然後執行成功函數,而$ .getScript異步是真實的。我編輯了原始答案,使其更加清晰。 – finbae

+2

Async false已棄用。 [同步​​和異步請求](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests) – DavidDomain

相關問題