異類的Javascript處理和解析URL的方式
通常來說,我們使用Javascript處理和解析URL是使用location對象。在今天這個(gè)代碼小技巧中,我們使用另外一個(gè)比較異類的方式處理和解析URL。
代碼如下:
function parseURL(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('/') }; }
如何使用這個(gè)方法呢?簡單如下:
var myURL = parseURL('http://abc.com:8080/dir/index.html?id=255&m=hello#top'); myURL.file;// = 'index.html' myURL.hash;// = 'top' myURL.host;// = 'abc.com' myURL.query;// = '?id=255&m=hello' myURL.params;// = Object = { id: 255, m: hello } myURL.path;// = '/dir/index.html' myURL.segments;// = Array = ['dir', 'index.html'] myURL.port;// = '8080' myURL.protocol;// = 'http' myURL.source;// = 'http://abc.com:8080/dir/index.html?id=255&m=hello#top'
GBdebug在線調(diào)試唯一地址:http://www.gbtags.com/gb/debug/c8946680-fb7f-4a2b-8cb7-9c81b420a74a.htm
可以看到運(yùn)行結(jié)果如下:
歡迎訪問GBin1.com


浙公網(wǎng)安備 33010602011771號(hào)