Реализация include scripts (подгрузки скриптов) на JavaScript
Как сделать следующую конструкцию:
js.include('http://htmlweb.ru/add_script.js');
Какие препятствия поджидают нас? Во-первых, инклюд должен полностью отрабатывать до начала выполнения кода.
Во-вторых, не исключены зависимости нескольких файлов от одного модуля и загружать его дважды совсем не хочется.
В-третьих, требуется какой-нибудь механизм загрузки файлов с сервера. Итак.
Будем использовать XHTTPRequest. Этот объект работает в двух режимах: асинхронном (когда указывается функция обратного вызова) и синхронном (запрос происходит непосредственно во время вызова xhttp.open()). Нам нужен второй: при этом код загрузится прямо на месте js.include. А дальше достаточно выполнить eval(xhttp.responseText):
// объявляем
js = {};
js.loadedModules = {};
js.include = function(path) {
if(js.loadedModules[path]) return;
var transport = js.getXHTTPTransport();
transport.open('GET', path , false);
transport.send(null);
var code = transport.responseText;
eval(code);
}
// используем
js.include('http://htmlweb.ru/add_script.js');
.
Прокомментировать/Отблагодарить