//jsloader.js (function() { var scriptManager= {}; scriptManager.loadingcount=0; scriptManager.loadjs=async function(pth) { var resolve; var reject; var ret=new Promise(function(s, r) { resolve=s; reject=r; }); var sc=document.createElement("script"); sc.src=pth; //sc.type="text/javascript"; if(document.readyState=="complete") { document.body.appendChild(sc); } else { window.addEventListener("load", function() { document.body.appendChild(sc); }); } sc.addEventListener(("readyState" in sc?"readystatechange":"load"), function() { console.info("script "+pth+" loaded successfully."); scriptManager.loadingcount--; resolve(); }); sc.addEventListener("error", function() { window.loadfail("script "+pth+" load failed"); reject(); }); scriptManager.loadingcount++; }; scriptManager.isDone=function() { return scriptManager.loadingcount==0; }; scriptManager.waitAll=async function() { return new Promise(function(resolve, reject) { }); }; window.scriptManager=scriptManager; })();