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

  

window.location.search 为何在url 带# 号时获取不到 ?的更多相关文章

  1. window.location.search 在url中有?name=value时仍为‘’的情况

    1,当页面有hash#值 而?name=value在hash #的串后面将会有这种结果 2,为什么 window.location.search 为空? 答:注意上面的search和hash的区别,如 ...

  2. 通过window.location.search获取页面url传递的参数

    function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...

  3. (转)window.location.search的用法

    location.search是从当前URL的?号开始的字符串如:http://www.51js.com/viewthread.php?tid=22720它的search就是?tid=22720 通过 ...

  4. window.location.search作用

    window.location.search.substr(1).split("&") 这里面的相关属性和时间还有参数能具体说明一下吗?window.location wi ...

  5. [置顶] 初识window.location.search

    window.location.search是从当前URL的?号开始的字符串 如:http://www.domain.com/item?id=0064014 它的search就是?id=0064014

  6. javascript中window.location.search的用法和作用。

    用该属性获取页面 URL 地址: window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostnam ...

  7. window.location.search的用法 和 地址栏的的javsscript编码与解码

    ocation.search是从当前URL的?号开始的字符串 如:http://www.51js.com/viewthread.php?tid=22720 它的search就是?tid=22720 e ...

  8. js中window.location.search的用法和作用。

    用该属性获取页面 URL 地址: window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostnam ...

  9. js中window.location.search的用法和作用

    用该属性获取页面 URL 地址: window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostnam ...

随机推荐

  1. 全栈开发系列学习2——django项目搭建

    项目代码:http://yunpan.cn/cHajgT4HvgHqx (提取码:8350) 配置项目: 1. 首先确保你的机器安装了python和pip,这两种安装比较简单,这里就不说了. 2. 在 ...

  2. zabbix3.4.8配置自动发现主机并监控

    一.       自动发现功能简介 Zabbix服务器端通过网络或者主机名等方式进行客户端的扫描发现,从进行加入到监控的主机队列中,适用于批量加入多主机监控的场景. 二.       自动发现功能实施 ...

  3. React(1) --新建项目

    搭建React开发环境之前的准备工作 1.必须要安装node.js (注意:安装node.js稳定版本) 2.安装cnpm,用cnpm替代npm npm install -g cnpm --regis ...

  4. H5手机端底部菜单覆盖中间部分内容的解决办法

    一.第一种Js动态计算中间内容的高度. 二.第二种给底部上面写个<div style="底部的高度"></div> 三.第三种给中间部分写一个margin- ...

  5. Shell04--循环语句

    目录 Shell04---循环语句 1. 循环语句for基本概述 2. 循环语句for场景示例 3. 循环语句while基本概述 4. 循环语句while场景示例 5. 内置跳出循环语句指令 Shel ...

  6. ELKStack之极速入门(上)

    ELKStack之极速入门(上) 链接:https://pan.baidu.com/s/1V2aYpB86ZzxL21Hf-AF1rA 提取码:7izv 复制这段内容后打开百度网盘手机App,操作更方 ...

  7. rabbitmq路由规则

    信道如何共用???? 几台机器共用一个channel 如何做到?

  8. MFC的Dlg和App什么区别?应用程序类与对话框类

    MFC里有个app类..他是一个项目工程类,有一个全局的实例化.theApp你可以理解为整个项目的实例,它重载了入口函数,所有的窗口神马的,都是在这个类里实例化的. dlg是对话框,是一个窗口.一个程 ...

  9. 三栏布局只知道圣杯、双飞翼,最终评级是……F

    三栏布局,面试与工作中的常见布局.分左中右三部分,其中左右宽度已知,中间宽度自适应.根据不同的DOM顺序与CSS处理,这里写下了五类布局方式. 一.浮动布局 1 圣杯布局 L:"我问你,你就 ...

  10. ThreadPoolExecutor扩展

    import java.util.concurrent.*; /** * ThreadPoolExecutor扩展 */ public class ExtThreadPool { public sta ...