Регистрация Войти
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Реализация 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');
.
Прокомментировать/Отблагодарить