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'
  • 复制代码

    相关文章:

    • 2022-12-23
    • 2022-12-23
    • 2022-12-23
    • 2022-02-08
    • 2021-04-19
    • 2021-07-25
    • 2021-09-13
    • 2022-12-23
    猜你喜欢
    • 2021-11-17
    • 2021-11-17
    • 2022-12-23
    • 2022-12-23
    • 2022-01-22
    • 2022-01-09
    • 2021-11-27
    相关资源
    相似解决方案