/*
* @function: 通过a标签解析url标签
* @param:url url参数是字符串,解析的目标
通过IE6-9 chrome Firefox测试
*
*/
function parseURL(url) {
//创建一个a标签
var a = document.createElement('a');
//将url赋值给标签的href属性。
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('/') //路径片段
};
}
测试地址
console.log(parseURL("http://www.w3school.com.cn/jsref/dom_obj_anchor.asp?type=2#id2"));
结果如下
{
file: "dom_obj_anchor.asp",
hash: "id2",
host: "www.w3school.com.cn",
params: {type: "2"},
path: "/jsref/dom_obj_anchor.asp",
port: "80",
protocol: "http",
query: "?type=2",
relative: "/jsref/dom_obj_anchor.asp?type=2#id2",
segments: [0: "jsref",1: "dom_obj_anchor.asp"],
source: http://www.w3school.com.cn/jsref/dom_obj_anchor.asp?type=2#id2
}