自己写了个方法,使用原生js获取地址栏(或者指定地址)的参数
getParams(name,url)
1、name
,需要获取参数的名称,为空的话,直接返回参数的json对象
2、url
, 需要传入的地址,默认为浏览器的地址
/**
* @function 获取浏览器地址的参数
* @param {String} [name=''] 获取值的key,默认为空,为空时,函数返回json对象
* @param {String} [url=window.location.href] 地址,默认为浏览器的url
* @example getParams('aa', 'https://www.baidu.com?aa=101') //101
*/
const getParams = (name = '', url = window.location.href) => {
let endVal = '';
if (url.indexOf("?") != -1) { //判断url中有没有出现?
let arrs = url.substring(url.indexOf("?") + 1).split('&'); //截取字符串,获取到?后面的那部分内容;以&符号为准,分割成数组
arrs = arrs.filter(item => item); //原有数组过滤为空的值
let obj = {};
for (let i = 0; i < arrs.length; i++) {
let index = arrs[i].indexOf("=");
let keys = arrs[i].substring(0, index); //第一个等号前面的那部分
let vals = arrs[i].substring(index + 1); //第一个等号后面的内容
if (keys) { //keys不为空时,追加到obj对象里
obj[keys] = decodeURI(vals); //解码输出,值含有中文字符的情况
}
}
if (arrs.length > 0) { //先判断数组是不是为空,在判断name是不是有值传过来
if (name) {
endVal = obj[name] || '';
} else {
endVal = obj;
}
}
}
return endVal;
}