您的位置:首页 > Web前端 > JavaScript

异类的Javascript处理和解析URL的方式

2014-03-24 14:42 387 查看




通常来说,我们使用Javascript处理和解析URL是使用location对象。在今天这个代码小技巧中,我们使用另外一个比较异类的方式处理和解析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('/')
};
}


如何使用这个方法呢?简单如下:

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在线调试唯一地址:http://www.gbtags.com/gb/debug/c8946680-fb7f-4a2b-8cb7-9c81b420a74a.htm

可以看到运行结果如下:





阅读原文:异类的Javascript处理和解析URL的方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: