Динамично включайте JavaScript и ожидайте

То, что я пытаюсь сделать, динамично включают один или несколько js файлов из JavaScript. Я знаю, что существует набор методов для этого, но я ищу решение, которое следует этим правилам:

1) Не используют любые платформы JS или библиотеки (jQuery, Прототип, и т.д.).

2) Сценарий должен остановить выполнение, пока внешний js файл полностью не загружается и анализируется браузером.

Рациональным позади № 2 является внешний js файл, будет включать функциональные определения, которые должны сразу использоваться после того, как сценарий включен. Большую часть времени браузер не имел времени для парсинга js файла, прежде чем я начну вызывать те функции.

Я не возражаю использовать обратный вызов для знания, когда сценарий закончен, загрузившись, но:

1) Я не знаю заранее, сколько сценариев будет динамично включенными, таким образом, я не хочу и не могу записать набор вложенных обратных вызовов. Я просто должен знать, когда они все закончены, загрузившись.

2) Я формулирую ту попытку использовать некоторое событие "загрузки" для увольнения, обратный вызов не мог бы работать, если браузер кэшировал JavaScript.

Редактирование я должен был упомянуть от запуска, что это для сменной системы, но я хотел сохранить свой вопрос/ответ достаточно универсальным, чтобы быть полезным другим людям.

Пользователи определили бы, какие плагины они хотят загрузить в массиве.

plugins = [ 'FooPlugin', 'BarPlugin' ];

Я затем циклично выполнился бы через массив и загрузил бы js сценарий для каждого плагина:

for(var i = 0; i < plugins.length; i++) {
    loadScript('plugins/' + plugins[i] + '.js');
}

Каждый плагин продвигает себя на массив loaded_plugins (Это - пример FooPlugin.js),

load_plugins.push({
    name: 'FooPlugin',
    // Other plugin methods and properties here
});
5
задан mellowsoon 18 October 2010 в 00:56
поделиться