diff options
Diffstat (limited to 'js/vendor/js-url/url.js')
-rw-r--r-- | js/vendor/js-url/url.js | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/js/vendor/js-url/url.js b/js/vendor/js-url/url.js index e1a26c08c..169f86334 100644 --- a/js/vendor/js-url/url.js +++ b/js/vendor/js-url/url.js @@ -2,6 +2,10 @@ window.url = (function() { function isNumeric(arg) { return !isNaN(parseFloat(arg)) && isFinite(arg); } + + function decode(str) { + return decodeURIComponent(str.replace(/\+/g, ' ')); + } return function(arg, url) { var _ls = url || window.location.toString(); @@ -56,15 +60,16 @@ window.url = (function() { if(arg.charAt(0) === '?') { params = (params.split('?')[1] || '').split('#')[0]; } else if(arg.charAt(0) === '#') { params = (params.split('#')[1] || ''); } - if(!arg.charAt(1)) { return params; } + if(!arg.charAt(1)) { return (params ? decode(params) : params); } arg = arg.substring(1); params = params.split('&'); for(var i=0,ii=params.length; i<ii; i++) { - param = params[i].split('='); - if(param[0] === arg) { return param[1] || ''; } + param = params[i].split(/(.*?)=(.*)/).filter(Boolean); + + if(param[0] === arg) { return (param[1] ? decode(param[1]) : param[1]) || ''; } } return null; |