JavaScript: verificare l'avvenuto caricamento degli script nei browser che non supportano le Promise

JavaScript: verificare l'avvenuto caricamento degli script nei browser che non supportano le Promise

Il caricamento degli script in JavaScript per i browser obsoleti è una funzionalità abbastanza semplice da implementare. L'aspetto da definire con cura è la funzione da eseguire dopo che gli script sono stati inseriti ed il codice caricato. Vediamo insieme questa soluzione.

Possiamo definire il seguente oggetto di utility:


var Loader = function () {};
Loader.prototype = {
    require: function (scripts, callback) {
        this.loadCount      = 0;
        this.totalRequired  = scripts.length;
        this.callback       = callback;

        for (var i = 0; i < scripts.length; i++) {
            this.writeScript(scripts[i]);
        }
    },
    loaded: function (evt) {
        this.loadCount++;

        if (this.loadCount == this.totalRequired && typeof this.callback == 'function') {
        	 this.callback.call();
        }
    },
    writeScript: function (src) {
        var self = this;
        var s = document.createElement('script');
        s.type = "text/javascript";
        s.async = true;
        s.src = src;
        s.addEventListener('load', function (e) { self.loaded(e); }, false);
        var head = document.getElementsByTagName('head')[0];
        head.appendChild(s);
    }
}

Per prima cosa l'oggetto utilizza un array contenente i percorsi dei file da caricare, quindi tiene il conto degli script caricati utilizzando un contatore interno. Quando il contatore raggiunge il numero di elementi presenti nell'array, viene invocata la funzione di callback.

Esempio:


var loader = new Loader();
loader.require([
    "script-1.js",
    "script-2.js"], 
    function() {
        // Callback
        console.log('Script caricati');
});
Torna su