目录
window.location.hash
<script>
// 获取浏览器 hash 路径上的 userId 信息
(function getHashUserId() {
let obj = {};
// if (window.location.hash && window.location.hash.indexOf("?") !== -1) {
// }
if (true) {
// let arr = window.location.hash.split('?')[1].split('&')
let arr = ["userId=WKVbrfL4oiqgKyZzW/oIE+qe3d2QOSGE="];
for (let i = 0; i < arr.length; i++) {
let data = arr[i].split("=");
console.log(data, "data"); // (3) ['userId', 'WKVbrfL4oiqgKyZzW/oIE+qe3d2QOSGE', ''] 'data'
if (data.length === 3) {
obj[data[0]] = data[1];
}
}
console.log(obj.userId, "obj.userId"); // WKVbrfL4oiqgKyZzW/oIE+qe3d2QOSGE obj.userId
}
if (obj.userId) {
sessionStorage.setItem("userId", obj.userId);
}
})();
</script>
window.location.search
一、很多时候在 路由跳转 时 或者 在打开一个运维配置的服务时,
地址上 传入 我们需要的 参数 ,下面我就依照项目中的案例讲一下
获取浏览器地址栏中参数 的 简单方法 :
1、例如我们当前的地址是这样的
我们在 控制台 打印一下 location
接下来我们封装一个方法:
// 获取参数的方法
getSearchParams(search) {
const searchParams = {}
// 如果 location 中有 search 值 ,去除 search 值中的第一个字符 ‘?’
const searchStr = search.substring(1)
// 以 & 符为分隔符,解析出 key value 组合 ,组合的形式为 'key=value'
const searchArr = searchStr.length ? searchStr.split('&') : []
searchArr.forEach(item => {
// 以 = 为分隔符,解析出 key 和 value , 其中数组的第一项为 key ,数组的第二项为 value
let keyAndValue = item.split('=')
// 如果查询参数中包含中文,会被编码成一串字符串,需要使用 decodeURIComponent 进行 解码
let key = decodeURIComponent(keyAndValue[0])
let value = decodeURIComponent(keyAndValue[1])
if (key) {
searchParams[key] = value
}
})
return searchParams
}
const splitUrl = window.location.search;
let searchData = this.getSearchParams(splitUrl)
console.log(searchData, “searchData”)
会看到我们打印的值是:
这样我们就可以从 searchData 中解析我们需要的数据啦 ~