Skip to content

Instantly share code, notes, and snippets.

@nuweb
Last active August 29, 2015 14:23
Show Gist options
  • Save nuweb/7e929f5b91ee6d9824b7 to your computer and use it in GitHub Desktop.
Save nuweb/7e929f5b91ee6d9824b7 to your computer and use it in GitHub Desktop.
Asynchronous script and/or stylesheet loader
!function() {
"use strict";
var loader = function(assets) {
if (Object.prototype.toString.call(assets) !== "[object Array]" && assets.length < 1) {
return;
}
// get asset
var assetSrc = assets.shift();
// determine asset type
var assetType = (assetSrc.indexOf(".css") !== -1) ? "script" : "style";
// create elements style/script
var elm = document.createElement(assetType);
var head = document.getElementsByTagName("head")[0];
// set asset attributes
if (assetType === "script") {
elm.src = assetSrc;
elm.async = "true";
} else {
elm.href = assetSrc;
elm.rel = "stylesheet";
}
head.appendChild(elm);
// load until assets array is empty
loader();
}
// normalize environments
if (typeof define === "function" && define.amd) {
define(function() { return loader; });
} else if (module && module.exports) {
module.exports = loader;
} else {
self.loader = loader;
}
}();
// usage
var assets = ["script.js", "style.css"];
window.loader(assets);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment