在WEB开发中,时常会用到JavaScript来获取当前页面的url网址信息,在这里是我整理的一些获取url信息的小总结。
下面我们举例一个URL,然后获得它的各个组成部分:https://login.cihuiw.com/login?redirect=%2Findex
window.location.href(设置或获取整个 URL 为字符串)
var test = window.location.href;
alert(test);
//返回:http://login.cihuiw.com
window.location.protocol(设置或获取 URL 的协议部分)
var test = window.location.protocol;
alert(test);
//返回:https:
window.location.host(设置或获取 URL 的主机部分)
var test = window.location.host;
alert(test);
//返回:login.cihuiw.com
window.location.port(设置或获取与 URL 关联的端口号码)
var test = window.location.port;
alert(test);
//返回:空字符(如果采用默认的80端口(update:即使添加了:80),那么返回值并不是默认的80而是空字符)
window.location.pathname(设置或获取与 URL 的路径部分(就是文件地址))
var test = window.location.pathname;
alert(test);
//返回:/login
window.location.search(设置或获取 href 属性中跟在问号后面的部分)
var test = window.location.search;
alert(test);
//返回:?redirect=%2Findex
PS:获得查询(参数)部分,除了给动态语言赋值以外,我们同样可以给静态页面,并使用javascript来获得相信应的参数值。
window.location.hash(设置或获取 href 属性中在井号“#”后面的分段)
var test = window.location.hash;
alert(test);
//返回:空字符(因为url中没有)
截取?redirect=%2Findex
function getUrl(name, url) {
url = url || window.location.href;
url && url.indexOf("?") > -1 ? url = url.substring(url.indexOf("?") + 1) : '';
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var kv = url ? url.match(reg) : window.location.search.substr(1)["match"](reg);
if (kv != null && kv[2] != '') {
return unescape(kv[2]);
}
return null;
}
var test = getUrl("redirect")
//返回 %2Findex