jQuery $ .getScript - alte Funktionen und Variablen in Skript ausführen
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?
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;
}
});