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

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

通常来说,我们使用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的方式

阅读原文:异类的Javascript处理和解析URL的方式

你可能感兴趣的:(JavaScript)