33 lines
1.3 KiB
JavaScript
33 lines
1.3 KiB
JavaScript
|
function parse_URL(url) {
|
||
|
var a = document.createElement('a');
|
||
|
a.href = url;
|
||
|
return {
|
||
|
source: url,
|
||
|
protocol: a.protocol.replace(':', ''),
|
||
|
host: a.hostname,
|
||
|
port: a.port,
|
||
|
query: a.search,
|
||
|
params: (function () {
|
||
|
var ret = {},
|
||
|
seg = a.search.replace(/^\?/, '').split('&'),
|
||
|
len = seg.length,
|
||
|
i = 0,
|
||
|
s;
|
||
|
for (; i < len; i++) {
|
||
|
if (!seg[i]) {
|
||
|
continue;
|
||
|
}
|
||
|
s = seg[i].split('=');
|
||
|
ret[s[0]] = s[1];
|
||
|
}
|
||
|
return ret;
|
||
|
})(),
|
||
|
file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1],
|
||
|
hash: a.hash.replace('#', ''),
|
||
|
path: a.pathname.replace(/^([^\/])/, '/$1'),
|
||
|
relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1],
|
||
|
segments: a.pathname.replace(/^\//, '').split('/')
|
||
|
};
|
||
|
}
|
||
|
|
||
|
console.log(parse_URL('https://github.com/pubnub/python/search?utf8=%E2%9C%93&q=python'));
|