diff options
author | Christian Pointner <equinox@spreadspace.org> | 2018-02-26 23:35:36 +0100 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2018-02-26 23:35:36 +0100 |
commit | 0e9bbbf754bf8c2ee0f2a37b9a05fecd884bb42e (patch) | |
tree | dd5e2ed16e95c05919ccbf7389a14865af0ea674 /contrib/site/js/parseLocationHref.js | |
parent | added stream-site nginx (diff) |
new www stuff
Diffstat (limited to 'contrib/site/js/parseLocationHref.js')
-rw-r--r-- | contrib/site/js/parseLocationHref.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/contrib/site/js/parseLocationHref.js b/contrib/site/js/parseLocationHref.js new file mode 100644 index 0000000..ba2cd5b --- /dev/null +++ b/contrib/site/js/parseLocationHref.js @@ -0,0 +1,53 @@ +function parseLocationHref() { + var matches = window.location.href.match(/(https?):\/\/(.*)/); + if(matches === null) { + return null; + } + + var uri = {}; + uri.scheme = matches[1]; + uri.servername = ''; + uri.path = []; + uri.query = []; + uri.fragment = ''; + + if(matches[2].indexOf('/') < 0) { + uri.servername = parts[2]; + return uri; + } + + var parts = matches[2].split('/'); + uri.servername = parts[0]; + uri.path = parts.slice(1); + + var tmp = uri.path[uri.path.length-1]; + if(tmp.length > 0) { + var qidx = tmp.indexOf('?'); + var fidx = tmp.indexOf('#'); + + var query = ''; + if(qidx >= 0 && fidx >= 0) { + uri.path[uri.path.length-1] = tmp.substring(0, qidx); + if(qidx < fidx) { + query = tmp.substring(qidx+1, fidx); + } + uri.fragment = tmp.substring(fidx+1); + } else if (qidx >= 0 && fidx < 0) { + uri.path[uri.path.length-1] = tmp.substring(0, qidx); + query = tmp.substring(qidx+1); + } else if (qidx < 0 && fidx >= 0) { + uri.path[uri.path.length-1] = tmp.substring(0, fidx); + uri.fragment = tmp.substring(fidx+1); + } + if(query.length > 0) { + uri.query = query.split('&'); + } + uri.parameters = {}; + for (var i = 0; i < uri.query.length; i++) { + var parameter = uri.query[i].split('='); + uri.parameters[parameter[0]] = parameter[1]; + } + } + + return uri +} |