JS获取地址栏参数

最近在写vue项目的获取地址栏参数时跳了个小坑,记录学习一下。
用location.search:

 function getQueryString(name) {
   var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); 
      var r = window.location.search.substr(1).match(reg);
      if (r != null) return decodeURI(r[2]); 
      return null; 
}

但是像 http://localhost:8002/#/home/test?deviceid_s=864207059707329 这样的地址,取location.search时值为空。
原因: 因为查询字符串search只能取到“?”后面和“#”之前的内容,如果“#”之前没有“?”search取值为空。
改用location.href:

function getQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
    var r = window.location.href.split('?')[1].match(reg); //匹配目标参数
    if (r != null) return decodeURI(r[2]); //decodeURI参数内容。
    return null; //返回参数值
}

后来自己写了个获取地址栏所有参数的方法,如下:


function getPamars() {
    let info = decodeURIComponent(location.href.split('?')[1])
    if (info === 'undefined') return null
    info = info.split("&").join()
    let list = info.split(",")
    let json = {}
    list.forEach(v => {
        let key = v.split("=")[0],
            value = v.split("=")[1]
        json[key] = value
    })
    return json
}

这个方法目前还没有翻车,但难免有所缺漏。还请翻到此页的大佬们指教

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值