Тема: Скрипт одновременной загрузки стилей/скриптов в <head>
Собственно я написал скрипт, но не может быть такого, чтобы он был идеальным, ибо до меня его уже написали бы (сейчас все подобные скрипты занимают не один файл размеров в не одну сотню строк). Получается, в моем есть огрехи - безопасность, неэффективность, работа через раз и т.п.
Но пока я его тестил сам, ни одного бага не выявил: страница загружается быстрее и в консоли отображается верная отладочная инфа. Мб вы меня натолкнете на мысль что в нем может быть не так?)
var loadJavaScriptFiles = {
jQuery : "ljs",
core : "js",
common : "tjs",
}
function setCallbacks(fileref, fname) {
fileref.onload = function() {
console.log(fname + " loaded successfully");
if (fname == "common.js") {
try {
common();
} catch(e) {
console.log(e + " - wait for loading jQuery.js");
}
}
if (fname == "jQuery.js") {
try {
common();
} catch(e) {
console.log(e + " - wait for loading common.js");
}
}
};
fileref.onerror = function() {
console.log("Some error occurred with loading " + fname);
};
}
function dynamicLoad(filesArray){
var i = 0
var fname = new Array;
var fileref = new Array;
var fileSRC = {
ljs : "engine/javascript/library/",
js : "engine/javascript/",
tjs : "templates/ru/defalut/javascript/",
css : "engine/pages/css/",
tcss : "templates/ru/defalut/css"
};
for (var key in filesArray) {
var filetype = filesArray[key];
var fileName = key;
if (filetype=="js"|| filetype=="ljs" || filetype=="tjs") {
fileref[i]=document.createElement('script');
fileref[i].setAttribute("type","text/javascript");
fileref[i].setAttribute("src", fileSRC[filetype] + fileName + ".js");
fname[i] = fileName + ".js";
} else
if (filetype=="css" || filetype=="tcss"){
fileref[i]=document.createElement("link");
fileref[i].setAttribute("rel", "stylesheet");
fileref[i].setAttribute("type", "text/css");
fileref[i].setAttribute("href", fileSRC[filetype] + fileName + ".css");
fname[i] = fileName + ".css";
};
if (typeof fileref[i]!="undefined") {
document.getElementsByTagName("head")[0].appendChild(fileref[i]);
};
i = i + 1;
};
for (i = 0; i<fileref.length; i++) {
setCallbacks(fileref[i], fname[i]);
};
};
dynamicLoad(loadJavaScriptFiles);