获取链接携带的参数
//获取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 {} } } },