zoukankan      html  css  js  c++  java
  • window.location.search 为何在url 带# 号时获取不到 ?

    1. 我们在获取url参数时,会常常用到截取参数
    getUrlParam(name) {
    				const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)') // 构造一个含有目标参数的正则表达式对象
    				const r = window.location.search.substr(1).match(reg) // 匹配目标参数
    				if (r != null) {
    					return unescape(r[2]) // 返回参数值
    				} else {
    					return null
    				}
    			}
    

    2. 但这样 window.location.search 这样常常会获取不到。

    原因是; search只能在取到“?”后面和“#”之前的内容,如果“#”之前没有“?”search取值为空。它默认参数和#是一个字符串

    3.完善

        function getQueryString(key)
        {
            var after = window.location.search;
            if(after.indexOf('?') === -1) return null; //如果url中没有传参直接返回空
    
            //key存在先通过search取值如果取不到就通过hash来取
            after = after.substr(1) || window.location.hash.split("?")[1];
    
            if(after)
            {
                var reg = new RegExp("(^|&)"+ key +"=([^&]*)(&|$)");
                var r = after.match(reg);
                if(r != null)
                {
                    return  decodeURIComponent(r[2]);
                }
                else
                {
                    return null;
                }
            }
        }
    

      4.对于没有#号url ,最好的是方法是:

    let data = {};
    				let src = window.location.href
    				let index = src.indexOf("?");
    				if (index === -1) {
    					return data;
    				}
    				let dataStr = src.substring(src.indexOf("?") + 1);
    				let dataArray = dataStr.split("&");
    				for (let i = 0; i < dataArray.length; i++) {
    					let param = dataArray[i].split("=");
    					data[param[0]] = param[1];
    				}
    // urlData 是{} 放在data中。
    				this.urlData = data
    

      

  • 相关阅读:
    有return的情况下try_catch_finally的执行顺序
    java异常处理之try_catch_finally
    乔布简历
    策略模式--经典详细分析
    观察者模式(Observer Pattern)(二):HeadFirst中的气象站的实现
    luogu2444 [POI2000]病毒
    bzoj3172 luogu3966 [TJOI2013]单词
    luogu3808 luogu3796 AC自动机(简单版) AC自动机(加强版)
    vijos1459 车展
    poj2985 The k-th Largest Group
  • 原文地址:https://www.cnblogs.com/panax/p/11792252.html
Copyright © 2011-2022 走看看