Фреймы - зло.
На самом деле можно найти готовые скрипты загрузчиков которые сами проверяют по урлу или по алиасу был загружен такой скрипт или нет. То есть вам не нужна выдача скриптов с сервера аяксом-шмаяксом. Вы просто проверяете что если какого-то скрипта нет - то сказать чтоб выдали. Там же будет и событие загрузки, в которое можно передать функцию обеспечивающую дальнейшую работу.
Кстати по js мне тут и давали лукарство:
loader=(function(){
var cache={
js:{},
css:{}
},
url=function(name,type){
return (location.protocol=="https:"?"https:":"http:")
+'//'+location.hostname+'/ass/'+name+'/'+type+'/'+name+'.'+type;
};
return {
css:function(name){
var href=url(name,'css');
if(cache.css.hasOwnProperty(href))
return true;
var el = D.createElement("link");
el.rel = "stylesheet";
el.href = href;
cache.css[href] = 1;
D.head.appendChild(el);
},
js:function(name,callback) {
var src=url(name,'js');
if (cache.js.hasOwnProperty(src))
callback && (callback());
else {
var el = D.createElement('script'), loaded = 0;
el.src = src,
D.body.appendChild(el),
cache.js[src] = 1;
if(!callback)
return true;
el.onload = el.onreadystatechange = function () {
if ((el.readyState
&& el.readyState !== 'complete'
&& el.readyState !== 'loaded') || loaded)
return false;
el.onload = el.onreadystatechange = null, loaded = 1, callback();
};
}
}
};
})();