javascript parseUrl函数(来自国外的获取网址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'

  演示代码:

  

   [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]