获取链接携带的参数

            //获取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 {}
                    }
                }
            },                

 

posted @ 2022-05-16 09:59  怂的一批的蜗牛  阅读(365)  评论(0编辑  收藏  举报