Loader
This js and css loader
HTML
<!--
<script src="fcms.js" data-loadjs="ajax.js,test.js"></script>
Скрипты ajax.js,test.js загрузятся сразу после загрузки fcms.js
<script>
fcms.loadJs('fcms.page_panel.js', function () {
alert('fcms.page_panel.js IS LOADED');
});
fcms.loadFnArray('Js', ['ajax.js', 'test.js']);
fcms.loadFnArray('Css', ['ajax.css', 'test.css']);
fcms.loadCss('ajax.css');
fcms.loadJs('testme.js');
fcms.loadJs('testme.js', function () {
fcms.loadJs('testme1.js', function () {
fcms.loadJs('testme2.js');
});
});
</script>
--!>
JavaScript
/**
* Created by Fedor Vlasenko [email protected]
*/
(function () {
"use strict";
var doc = window.document,
items = doc.scripts,
js, arr,
fcms = {
cache: {
js: {},
css: {}
},
loadJs: function (src, callback) {
if (this.cache.js.hasOwnProperty(src)) {
if (callback) {
callback();
} else {
return true;
}
}
var script = doc.createElement("script");
script.src = src;
this.cache.js[src] = 1;
doc.head.appendChild(script);
if (callback) {
if (script.readyState) {
script.onreadystatechange = function () {
if (script.readyState === "loaded" || script.readyState === "complete") {
script.onreadystatechange = null;
callback();
}
};
} else {
script.onload = function () {
callback();
};
}
}
},
loadCss: function (href) {
if (this.cache.css.hasOwnProperty(href)) {
return true;
}
var link = doc.createElement("link");
link.rel = "stylesheet";
link.href = href;
this.cache.css[href] = 1;
doc.head.appendChild(link);
},
loadBefore: function (href) {
if (navigator.appName.indexOf("Microsoft") !== -1) {
(new Image()).src = href;
} else {
var obj = doc.createElement("object");
obj.width = 0;
obj.height = 0;
obj.data = href;
doc.body.appendChild(obj);
}
},
loadFnArray: function (fn, arr) {
...