jquery $ .getscript - старые функции и переменные в выполненном скрипте
Вопрос
Я выполняю JavaScript с jQuery $ .getscript. В выполненном скрипте я не доступа к функциям и переменным файла моего исходного файла.
Есть ли решение?
Решение
Сценарий, выполненный на $ .getscript () делает иметь доступ к глобальному контексту. Вы можете использовать любую глобальную переменную (или функцию для этого) изнутри внешнего скрипта.
Другие советы
Ник Craver, я просто трачу 3 (!) Часы, одержимые, почему моя вещь не будет работать, и вы дали мне понимание, которое мне нужно было заставить его работать.
Xoxoxoxoxoxoxoxoxo
Интересно отметить:
Вы можете объявить переменную как jQuery var, как это:
$variableName = something;
Таким образом, jQuery также имеет доступ к нему из любой точки объема.
$(function(){
$alertString = 'Hello World';
$.getScript('test.js', function(){
// do nothing
});
}
test.js:
alert( $alertString );
Я нашел ответ здесь полезным для моего понимания темы, но я все еще не мог заставить его работать в моем собственном контексте, пока я не буду Эта статья о TechMonks:
Когда я копирую / вставил свой последний пример в голову моего главного файла .js все это только что работал. Для меня по крайней мере, функция $ .getscript () была сломана, и это исправление:
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;
}
});