diff --git a/javascript/jquery-ondemand/jquery.ondemand.js b/javascript/jquery-ondemand/jquery.ondemand.js index 44d0b6198..ec647e66b 100644 --- a/javascript/jquery-ondemand/jquery.ondemand.js +++ b/javascript/jquery-ondemand/jquery.ondemand.js @@ -15,74 +15,34 @@ */ (function($){ - /** - * Decode URL from header string - * - * @param {String} str - * @returns {String} - */ var decodePath = function(str) { return str.replace(/%2C/g,',').replace(/\&/g, '&').replace(/^\s+|\s+$/g, ''); }; - - /** - * Remove querystring from the url. Necessary to prevent a file being included twice in the same page if - * requested at different times (e.g. during flush) - * - * @param {String} str - * @returns {String} - */ - var removeQuerystring = function(str) { - return str.split("?")[0]; - }; $.extend({ // loaded files list - to protect against loading existed file again (by PGA) _ondemand_loaded_list : null, - - /** - * Add a new url to the loaded item - * - * @param {String} url - */ - registerLoadedItem : function(url) { - this._ondemand_loaded_list[removeQuerystring(url)] = 1; - }, /** * Returns true if the given CSS or JS script has already been loaded - * - * @param {String} scriptUrl Decoded CSS or JS file url - * @returns {Boolean} */ isItemLoaded : function(scriptUrl) { - var self = this, src, result; + var self = this, src; if(this._ondemand_loaded_list === null) { this._ondemand_loaded_list = {}; $('script').each(function() { src = $(this).attr('src'); - if(src) { - self.registerLoadedItem(src); - } + if(src) self._ondemand_loaded_list[src] = 1; }); $('link[rel="stylesheet"]').each(function() { src = $(this).attr('href'); - if(src) { - self.registerLoadedItem(src); - } + if(src) self._ondemand_loaded_list[src] = 1; }); } - result = this._ondemand_loaded_list[removeQuerystring(scriptUrl)]; - return typeof result !== 'undefined'; + return (this._ondemand_loaded_list[decodePath(scriptUrl)] !== undefined); }, - /** - * Requires a CSS File - * - * @param {String} styleUrl Decoded CSS file url - * @param {String} media - */ requireCss : function(styleUrl, media){ if(!media) media = 'all'; @@ -93,7 +53,6 @@ var ss = document.createStyleSheet(styleUrl); ss.media = media; - } else { var styleTag = document.createElement('link'); $(styleTag).attr({ @@ -104,7 +63,8 @@ }).appendTo($('head').get(0)); } - this.registerLoadedItem(styleUrl); + this._ondemand_loaded_list[styleUrl] = 1; + }, /** @@ -150,7 +110,7 @@ dataType: 'script', url: newJsInclude, success: function() { - self.registerLoadedItem(newJsInclude); + self._ondemand_loaded_list[newJsInclude] = 1; getScriptQueue(); }, cache: false,