1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- /**
- * 0.1.0
- * Deferred load js/css file, used for ui-jq.js and Lazy Loading.
- *
- * @ flatfull.com All Rights Reserved.
- * Author url: http://themeforest.net/user/flatfull
- */
- var uiLoad = uiLoad || {};
- (function($, $document, uiLoad) {
- "use strict";
- var loaded = [],
- promise = false,
- deferred = $.Deferred();
- /**
- * Chain loads the given sources
- * @param srcs array, script or css
- * @returns {*} Promise that will be resolved once the sources has been loaded.
- */
- uiLoad.load = function (srcs) {
- srcs = $.isArray(srcs) ? srcs : srcs.split(/\s+/);
- if(!promise){
- promise = deferred.promise();
- }
- $.each(srcs, function(index, src) {
- promise = promise.then( function(){
- return src.indexOf('.css') >=0 ? loadCSS(src) : loadScript(src);
- } );
- });
- deferred.resolve();
- return promise;
- };
- /**
- * Dynamically loads the given script
- * @param src The url of the script to load dynamically
- * @returns {*} Promise that will be resolved once the script has been loaded.
- */
- var loadScript = function (src) {
- if(loaded[src]) return loaded[src].promise();
- var deferred = $.Deferred();
- var script = $document.createElement('script');
- script.src = src;
- script.onload = function (e) {
- deferred.resolve(e);
- };
- script.onerror = function (e) {
- deferred.reject(e);
- };
- $document.body.appendChild(script);
- loaded[src] = deferred;
- return deferred.promise();
- };
- /**
- * Dynamically loads the given CSS file
- * @param href The url of the CSS to load dynamically
- * @returns {*} Promise that will be resolved once the CSS file has been loaded.
- */
- var loadCSS = function (href) {
- if(loaded[href]) return loaded[href].promise();
- var deferred = $.Deferred();
- var style = $document.createElement('link');
- style.rel = 'stylesheet';
- style.type = 'text/css';
- style.href = href;
- style.onload = function (e) {
- deferred.resolve(e);
- };
- style.onerror = function (e) {
- deferred.reject(e);
- };
- $document.head.appendChild(style);
- loaded[href] = deferred;
- return deferred.promise();
- }
- })(jQuery, document, uiLoad);
|