//获取url参数
getUrl(str, obj, bool) {
// 获取当前页面路径 hash后面的部分
let urlObj = {}
var u = navigator.userAgent; //手机类型
var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; //g
var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
var str = "";
str = location.href.split("#")[0]; //hash后面的部分如果带上ios中config会不对
//str = location.href.split("#")[1]; //特殊情况下0获取不到,尝试一下1
if (str.indexOf('?') != -1) {
// 获取地址栏参数
let num = str.indexOf("?")
str = str.substr(num + 1)
let arr = str.split("&")
this.Arr = arr
arr.forEach(item => {
let query = item.split("=")
urlObj[query[0]] = decodeURI(query[1])
})
// 设置回调值
if (!obj) {
return urlObj
}
if (typeof(obj) == 'string') { // obj为字符串时,bool表示希望得到的值类型:Number(数字类型)、String(字符串类型),默认 String
if (bool) {
return bool(urlObj[obj])
} else {
return urlObj[obj]
}
} else { // 参数为数组对象,bool表示 是否 仅return传递的参数;true:表示仅 return 传递的参数,false 表示处理传递的参数并返回所有地址栏参数,默认false
if (bool) { // 仅return传递的参数
let onlyObj = {}
obj.forEach(key => {
if (typeof(key.name) == 'string') { // name为字符串
if (urlObj[key.name] !== undefined) {
if (key.type) {
onlyObj[key.name] = key.type(urlObj[key.name])
} else {
onlyObj[key.name] = urlObj[key.name]
}
}
} else { // name为数组
onlyObj[key.concat] = []
key.name.forEach(item => {
if (urlObj[item]) {
onlyObj[key.concat].push(urlObj[item])
}
})
}
})
return onlyObj
} else { // 非仅return传递的参数
obj.forEach(key => {
if (typeof(key.name) == 'string') { // name为string
if (urlObj[key.name] !== undefined) {
if (key.type) {
urlObj[key.name] = key.type(urlObj[key.name])
} else {
urlObj[key.name] = urlObj[key.name]
}
if (key.delete) {
delete urlObj[key.name]
}
}
} else { // name为数组
urlObj[key.concat] = []
key.name.forEach(item => {
if (urlObj[item]) {
if (key.type) {
urlObj[key.concat].push(key.type(urlObj[item]))
} else {
urlObj[key.concat].push(urlObj[item])
}
}
})
}
})
return urlObj
}
}
} else {
if (typeof(obj) == 'string') {
return ''
} else {
return {}
}
}
},