Question

i exécuter un javascript avec jQuery $ .getScript. Dans le script exécuté je n'ai pas accès aux fonctions et variables de mon fichier source.

Y at-il une solution?

Était-ce utile?

La solution

Le script exécuté par .getScript $ () fait ont accès au contexte mondial. Vous pouvez utiliser une variable globale (ou fonction pour cette question) à partir de votre script externe.

Autres conseils

Nick Craver, je passe seulement 3 (!) Heures obsédée par la raison pour laquelle mon truc ne travaillerait, et vous m'a donné l'idée que je devais le faire fonctionner.

XOXOXOXOXOXOXOXO

intéressant à noter:

vous pouvez déclarer une variable comme jquery var comme ceci:

$variableName = something;

Ce jquery façon a également accès à ne importe où dans le champ d'application.

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

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

test.js: 

alert( $alertString ); 

J'ai trouvé la réponse utile ici pour ma compréhension du sujet, mais je ne pouvais pas faire encore travailler dans mon contexte jusqu'à ce que je suis tombé sur cet article sur TechMonks:

Quand je copier / coller leur dernier exemple dans la tête de mon fichier .js tout juste travaillé. Pour moi, au moins, la fonction .getScript $ () a été brisé, ce qui est le correctif:

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;
 }
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top