// 定义一个名为encodeURIUrlParams的函数
encodeURIUrlParams() {
// 创建一个URLSearchParams对象,该对象用于处理URL的查询字符串部分
const urlParams = new URLSearchParams(window.location.search)
// 创建一个空对象用于存储解码后的参数
const params = {}
// 使用Array.from方法将URLSearchParams对象转化为数组,并使用map方法遍历数组
Array.from(urlParams).map(arr => {
// 获取当前参数的键和值
const [key, value] = arr
// 将参数的键和值存储到params对象中
params[key] = value
// 如果参数的键不是'clz',则对值进行加密,并将加密后的值重新设置回URLSearchParams对象中
if (key !== 'clz') {
urlParams.set(key, this.encrypt(value, 3))
}
})
// 如果params对象中包含'encrypt'键,则对除'clz'外的所有参数值进行解密,并将解密后的值重新设置回params对象中
if (Object.keys(params).includes('encrypt')) {
Object.keys(params).map(key => {
if (key !== 'clz') params[key] = this.decrypt(params[key], 3)
})
// 返回解密后的params对象
return params
} else {
// 如果params对象中不包含'encrypt'键,则向params对象中添加'encrypt'键,并将其值设置为'1'
params.encrypt = '1'
// 向URLSearchParams对象中添加'encrypt'键,并将其值设置为'1'
urlParams.set('encrypt', '1')
}
// 创建一个新的URL对象,该对象的查询字符串部分由URLSearchParams对象的toString方法生成
const newUrl = new URL(window.location);
newUrl.search = urlParams.toString();
// 使用history.pushState方法将新的URL添加到浏览器历史记录中,并更新当前页面的URL为新的URL
history.pushState({}, '', newUrl);
// 返回解密后的params对象
return params
}