今天分享一个Web前端开发TIPS:用原生Javascript获取当前访问地址以及一些参数。这个应用用的非常多,比如url传参给下一个页面等等。废话不多说,一起学习下吧。
一、js获取当前域名有2种方法
var domain = document.domain;
var domain = window.location.host;
二、获取当前Url的4种方法
var url = window.location.href;
var url = self.location.href;
var url = document.url;
var url = document.location;
三、获取当前相对路径的方法
function GetUrlRelativePath(){
var url = document.location.toString();
var arrUrl = url.split("//");
var start = arrUrl[1].indexOf("/");
var relUrl = arrUrl[1].substring(start);//stop省略,截取从start开始到结尾的所有字符
if(relUrl.indexOf("?") != -1){
relUrl = relUrl.split("?")[0];
}
return relUrl;
}
四、获取当前Url参数的方法
function getQueryVariable(variable){
var query = window.location.search.substring(1);
var vars = query.split("?");
for (var i=0;i<vars.length;i++) {
var pair = vars[i].split("=");
if(pair[0] == variable){return pair[1];}
}
return(false);
}
提示:获取参数的时候根据引用不同设置url.split("?")里面的符号,有时候是&,有时候是?,或者其他的。
例1
比如有一个URL地址:https://www.xxx.com/?campaignId=activity004
我想获取的campaignId参数值。这时候我们要用到第四种方法。代码如下:
var campaignId = getQueryVariable("campaignId")
调用getQueryVariable函数,后面写入参数名,即可得到参数值。
例2
比如有一个URL地址:https://www.xxx.com/?campaignId=activity004&cTag=123
我需要把cTag的参数传给下后面的页面。这时候,我们需要改变下getQueryVariable里的vars变量的定义:
var vars = query.split("&");
注意:有时候后台会反馈回来,你传给去的值是false或者undefined,这个问题是很多新手会犯的错误。我们传过去之前先要判断这个值【ctagId】是否存在。如下代码:
if(ctagId){
if(accountUrl.indexOf("?") != -1){
url = accountUrl+"&cTag="+ctagId;
}else{
url = accountUrl+"?cTag="+ctagId;
}
}else{
console.log("Url has no cTag!")
}
并且还有个问题就是,有时候获取的URL地址参数排序是混乱的,所以还要对参数前面的符号进行判断如果是第一个参数,执行对应的判断。
OK,URL传值的就说这么多,有问题的童鞋可以加群咨询。