2016-05-02 13 views
1

Ich versuche, ein Laden modal zu einer HTML-Seite hinzufügen, während einige Javascript ausgeführt werden. Mein Problem ist, dass ich nicht bemerken kann, wenn diese Skripte fertig sind.Javascript Callback, wenn einige Skripte in der Seite ausgeführt haben

Ich habe versucht, mit:

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

Aber wie die getScript JQuery documentation sagt:

Der Rückruf wird ausgelöst, sobald das Skript aber nicht unbedingt ausgeführt geladen wurde.

Gibt es eine Möglichkeit, einen Rückruf für ein solches Ereignis einzurichten?

Antwort

0

Sie könnten versuchen, $ .ajax zu verwenden, um die Skripte zu laden.

async muss falsch sein, damit das Skript zuerst geladen und ausgeführt wird, bevor die Erfolgsfunktion ausgeführt wird.

+2

'$ .getScript' verwendet tatsächlich die' $ .ajax' Methode. Es ist nur eine Kurzschrift. Das Problem des OP ist nicht das Laden des Skripts offensichtlich. Es ist eher zu wissen, ob eine Funktion im Lazy-Loaded-Skript ausgeführt wurde. – DavidDomain

+0

@DavidDomain async ist falsch meine Antwort, was bedeutet, dass es lädt und führt das Skript zuerst, dann führt die Erfolgsfunktion, während mit $ .getScript async ist wahr. Ich habe die ursprüngliche Antwort bearbeitet, um sie klarer zu machen. – finbae

+2

Asynchron falsch ist veraltet. [Synchrone und asynchrone Anfragen] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests) – DavidDomain