异类的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的方式

posted @   igeekbar  阅读(186)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

中文互联: GBin1.com | RSS订阅 | 邮件订阅 | 手机订阅

点击右上角即可分享
微信分享提示