Domanda

eseguo un javascript con jQuery $ .getScript. Nello script eseguito non ho accesso alle funzioni e le variabili del mio file di origine.

C'è una soluzione?

È stato utile?

Soluzione

Lo script eseguito da $ .getScript () ha hanno accesso al contesto globale. È possibile utilizzare qualsiasi variabile globale (o una funzione per questo) all'interno del tuo script esterno.

Altri suggerimenti

Nick Craver, ho solo spendere 3 (!) Ore ossessionato perché la mia cosa non avrebbe funzionato, e mi avete dato l'intuizione di cui avevo bisogno per farlo funzionare.

XOXOXOXOXOXOXOXO

interessante notare:

è possibile dichiarare una variabile come var jQuery come questo:

$variableName = something;

In questo modo jQuery ha anche accesso ad esso da qualsiasi parte del campo di applicazione.

$(function(){ 
    $alertString = 'Hello World'; 

    $.getScript('test.js', function(){ 
        // do nothing 
    });    
} 

test.js: 

alert( $alertString ); 

Ho trovato la risposta qui utile per la mia comprensione del tema, ma io ancora non riusciva a farlo funzionare nel mio contesto fino a quando mi è capitato su questo articolo su TechMonks :

Quando copio / incollato il loro ultimo esempio nella testa dei miei principali file .js tutto solo ha funzionato. Per me almeno, la funzione $ .getScript () era rotto, e questa è la correzione:

jQuery.extend({
 getScript: function (url, callback) {
     var head = document.getElementsByTagName("head")[0] || document.documentElement;
     var script = document.createElement("script");
     script.src = url;

     // Handle Script loading
     {
         var done = false;

         // Attach handlers for all browsers
         script.onload = script.onreadystatechange = function () {
             if (!done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                 done = true;
                 //success();
                 //complete();
                 if (callback) callback();

                 // Handle memory leak in IE
                 script.onload = script.onreadystatechange = null;
                 if (head && script.parentNode) {
                     head.removeChild(script);
                 }
             }
         };
     }

     head.insertBefore(script, head.firstChild);
     return undefined;
 }
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top