Last active
August 29, 2015 14:23
-
-
Save nuweb/7e929f5b91ee6d9824b7 to your computer and use it in GitHub Desktop.
Asynchronous script and/or stylesheet loader
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!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