Skip to content

Instantly share code, notes, and snippets.

@make-sum
Created September 17, 2013 19:16
Show Gist options
  • Save make-sum/6599300 to your computer and use it in GitHub Desktop.
Save make-sum/6599300 to your computer and use it in GitHub Desktop.
Script and CSS style loader to manage the load order and detect when complete.
var numLoaded=0;
var minimumToLoad=1;
function loadScript( file, type, title ) {
//console.log( "javascript: " + "loadScript: " + file );
if ( type == 'js' ){
var script = document.createElement( 'script' );
script.type = 'text/javascript';
script.src = file;
if (script.readyState){
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
loadHandler( title );
}
};
} else {
script.onload = function(){
loadHandler( title );
};
}
var firstScriptTag = document.getElementsByTagName( 'script' )[0];
firstScriptTag.parentNode.insertBefore( script, firstScriptTag );
} else if ( type == 'css' ){
var script = document.createElement( 'link' );
script.rel = 'stylesheet';
script.type = 'text/css';
script.title = title;
//script.media = "screen";
//script.charset = "UTF-8";
script.href = file;
document.getElementsByTagName("head")[0].appendChild(script);
}
}
loadScript ( 'myscript.js', 'js', "myname" );
if ( optionalVariable == true ) {
minimumToLoad++;
loadScript ( 'optionalscript.js', 'js', "variablescript" );
}
function loadHandler( name ) {
numLoaded++;
//console.log( "javascript: loadHandler: minimumToLoad: " + minimumToLoad + " numLoaded: " + numLoaded + " name: " + name );
if ( name == "myname" ) {
//do something
}
if ( numLoaded == minimumToLoad ) {
//do something
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment