前言
需求:
这里解释一下标题的意思,也就是说我们的url地址一般都是经过编码后的,所以不会出现中文这样的字眼,因为它们都是被编码了,像这样(比如我们访问一个地址是这样的http://hotPlace/place.html?topPlace=广州&name=琶洲
):
http://hotPlace/place.html?topPlace=%E5%B9%BF%E5%B7%9E&name=%E7%90%B6%E6%B4%B2
需求问题:
那我们这么去拿到这些编码的乱码中文转成解码后的中文呢?
思路:
我们可以配合window.location 对象拿到对应的参数,在使用正则RegExp筛选这个参数,最后通过解码decodeURI拿到乱码的中文参数值
封装代码:
/*
* 取地址栏的参数
* @param key
* key为传递的参数名称 例如 http://hotPlace/place.html?topPlace=广州&name=琶洲 key就是topPlace、name
* @return
*/
function getUrlParam(key){
// 获取当前访问地址参数 window.search 取到的是一串带参数的字符串,如:?topPlace=广州&name=琶洲
var url = window.location.search;
// 正则筛选地址栏
var reg = new RegExp("(^|&)"+ key +"=([^&]*)(&|$)");
// 匹配目标参数
var result = url.substr(1).match(reg);
// 返回参数值
return result ? decodeURI(result[2]) : null;
}
调用方法:
// 控制台打印参数 topPlace
console.log(getUrlParam('topPlace')); // 结果为 广州
// 控制台打印参数 name
console.log(getUrlParam('name')); // 结果为 琶洲
window.location对象:
结语
希望可以帮到您,over~