Почему это достигает main(), а jQuery все еще не определен?
Я пытаюсь изменить различные загрузчики так, чтобы несколько скриптов могли быть обработаны до вызова основной функции. Это должно загрузить jQuery, затем jQueryUI и затем вызвать main(), чтобы фактически запустить скрипт пользователя. Тем не менее, он проходит через цикл, но когда он попадает в main(), я получаю консольную ошибку от Chrome о том, что jQuery не определен.
!function loader (i) {
var requires = [ 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'
, 'https://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js'
];
var loadScript = function (i) {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = requires[i];
script.onload = (++i === requires.length) ? function () { loader(i); }
: function () { main(); }
document.head.appendChild(script);
};
loadScript(i || 0);
}();
function main () {
console.log(jQuery.version);
console.log(jQuery.ui.version);
}
2 ответа
Вот последний сценарий, который я придумал, если кто-то ищет такие вещи. http://userscripts.org/scripts/review/123588
Пилат поймал часть этого с троичным. У Нейта Б тоже была его часть: jQuery использовал jQuery.fn.jquery (но пользовательский интерфейс был непоследовательным и использовал jQuery.ui.version).
Было бы неплохо выяснить, как пропустить бит обертки посередине, для третьей стороны, но это работает.:)
Я не думаю jQuery.version
является действительным свойством и возвращает undefined
, Пытаться $.fn.jquery
вместо этого и посмотрим, что произойдет.