artabro/wire/modules/Page/PageFrontEdit/PageFrontEditLoad.js
2024-08-27 11:35:37 +02:00

48 lines
1 KiB
JavaScript

/**
* PageFrontEndEditLoad
*
* Load multiple JS files in order, not loading the next until the previous is loaded.
*
* Example of 'items' argument:
*
* var items = [ {
* test: function() { return true; (true if load needed, false if not) }, // optional
* file: 'url to file 1',
* after: function() { any additional code to execute after load } // optional, called only if file was specifically loaded
* }, {
* test: function() { return false },
* file: 'url to file 2'
* } ];
*
*
*/
function PageFrontEditLoad(items) {
var item = null;
var load = true;
function itemOnLoad() {
if(item && load && typeof item.after != "undefined") {
item.after();
}
if(!items.length) return;
item = items.shift();
load = typeof item.test == "undefined" || item.test();
if(load) {
loadItem(item);
} else {
itemOnLoad();
}
}
function loadItem(item) {
var script = document.createElement('script');
script.src = item.file;
script.onload = itemOnLoad;
document.body.appendChild(script);
}
itemOnLoad();
}