zoukankan      html  css  js  c++  java
  • js 截取url中的参数

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

    正常的页面可以调用这个方法,window.location.search获取到当前页面从问号 (?) 开始的 URL(查询部分)

    随后配合正则就可以筛选出想要的参数,比如链接:https://i.cnblogs.com/EditPosts.aspx?hello=123

    这么使用:  getQueryString(‘hello’)

    就可以直接获取到  “123”

    --------------------------------------------------------------

    这个方法在vue单页面中是不可用的,比如vue的hash模式,链接是含有#号且在?号之前的

    比如: http://192.168.1.181:8080/#/bookDetail?antBook=3

    如果这时候调用方法:this.getQueryString(‘antBook’),是会返回null的,主要原因是该死的#号,他会让window.location.search直接失效,阻碍我们导致

    根本拿不到我们想要的antBook的值

    这个时候也很简单,我们只要相对的改改代码,让从问号 (?) 开始变为从#号开始的 URL(锚)

    也就是将(window.location.search)更改为(window.location.hash

    这样在vue单页面中,就可以顺利取到参数值了

    --------------------------------------------------------------

    最后,由于我在vue的hash模式下进行了微信分享,链接被我处理了一下

    比如: http://192.168.1.181:8080/?isshare=1#/bookDetail?antBook=3

    这时候用上面的方法去取 antBook 的值还是取不到的

    需要对 window.location.hash 进行处理

    这次的锅要#后面的?号来背

    综上

     

  • 相关阅读:
    HotSpot 虚拟机垃圾回收算法实现
    多线程死锁的产生原因以及如何避免
    Java异常实战——OutOfMemoryError
    MySQL数据库中的四种隔离级别
    Java运行时数据区概述
    MySQL 字符集和校对
    debezium关于cdc的使用(下)
    debezium关于cdc的使用(上)
    对xxl-job进行simpleTrigger并动态创建任务扩展
    折腾Java设计模式之单例模式
  • 原文地址:https://www.cnblogs.com/DangerousBaymax/p/9265129.html
Copyright © 2011-2022 走看看