Frage

i ein Javascript mit jQuery $ .getScript ausführen. Im ausgeführten Skripts habe ich keinen Zugriff auf die Funktionen und Variablen meiner Quelldatei.

Gibt es eine Lösung?

War es hilfreich?

Lösung

Das Skript ausgeführt von $ .getScript () hat hat Zugriff auf den globalen Kontext. Sie können (was das betrifft oder Funktion) jede globale Variable aus Ihrem externen Skript.

Andere Tipps

Nick Craver, verbringe ich nur 3 (!) Stunden immer wieder auf, warum meine Sache nicht funktionieren würde, und ihr habt mir die Einsicht, die ich machen musste es funktionieren.

XOXOXOXOXOXOXOXO

interessant Hinweis:

Sie eine Variable als jquery var wie diese erklären können:

$variableName = something;

Auf diese Weise jquery hat auch Zugriff auf sie von überall in den Rahmen.

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

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

test.js: 

alert( $alertString ); 

fand ich die Antwort hier hilfreich für mein Verständnis für das Thema, aber ich konnte es immer noch nicht in meinem eigenen Kontext funktioniert, bis ich auf dieser Artikel auf TechMonks :

Wenn ich Kopieren / Einfügen ihr letztes Beispiel in den Kopf meiner Haupt Js-Datei alles nur gearbeitet. Für mich zumindest wurde die $ .getScript () Funktion gebrochen, und das ist das Update:

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;
 }
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top