一個不錯的JavaScript解析瀏覽器路徑方法
JavaScript中有時需要用到當前的請求路徑等涉及到url的情況,正常情況下我們可以使用location對象來獲取我們需要的信息,本文從另外一個途徑來解決這個問題,而且更加巧妙
方法如下:
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(’/’) };}
使用方法如下:
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’
相關文章: