2016-05-02 6 views
1

いくつかのJavaScriptが実行されている間、HTMLページに読み込みモーダルを追加しようとしています。私の問題は、これらのスクリプトの実行が終了したときに気付かないことです。ページ内の一部のスクリプトが実行されたときの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') 
    } 
}); 

asyncは、成功関数を実行する前にスクリプトをロードして実行するように、falseにする必要があります。

+2

'$ .getScript'は実際に' $ .ajax'メソッドを使用しています。それは単なる略記です。 OPの問題は明らかにスクリプトを読み込んでいません。遅延ロードされたスクリプト内の関数が実行されたかどうかを知ることです。 – DavidDomain

+0

@DavidDomain asyncはfalseです。私の答えです。つまり、まずスクリプトをロードして実行し、成功関数を実行します。一方、$ .getScript asyncはtrueです。私はそれをより明確にするためにオリジナルの答えを編集しました。 – finbae

+2

Async falseは推奨されていません。 [同期と非同期のリクエスト](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests) – DavidDomain

関連する問題