Кину сюда то что писал человеку на почту:
$Load = (function() {
// в этой переменной будем хранить ссылки на скрипты которые уже загружали
var loadedScripts = {};
function loadAsync(src, callback) {
if (src in loadedScripts) {
callback(loadedScripts[src] || src);
} else {
var script = document.createElement('script');
script.type = 'text/javascript';
if ("onload" in script || !("readyState" in script)) {
script.onload = function() {
callback(src);
}
} else {
script.onreadystatechange = function() {
if (this.readyState == "loaded" ||
this.readyState == "complete") {
callback(src);
}
}
}
script.src = src;
document.documentElement.firstChild.appendChild(script);
}
}
function loader(scripts, onload) {
scripts = typeof scripts === "string" ? [scripts] : scripts;
var
asyncCallback,
length = loader.instances.length;
if (scripts.length === 0) {
return onload && onload.call(this);
}
loadAsync(scripts.shift(), asyncCallback = function(src) {
if (typeof src === "function") {
src();
} else if (loader.instances.length > length) {
loadedScripts[src] = loader.instances[ length++ ];
loadedScripts[src]();
} else {
loadedScripts[src] = null;
}
if (scripts.length === 0) {
onload && onload.call(this);
} else {
loadAsync(scripts.shift(), asyncCallback);
}
});
}
loader.instances = [];
return loader;
})();
Использовать примерно так:
$Load(['script1.js', 'script2.js'], function() {
// loaded
});
// ну или вместо массива строка:
$Load('script1.js', function() {
// loaded
});
Далее в каждом скрипте который загружаете аяксом, код который нужно снова выполнить, обернуть вот так:
$Load.instances.push(function(){
// тут ваш код, который будет автоматически выполнен
// после загрузки или в уже загруженном скрипте.
});