js获取地址栏参数

1、Location 对象是 Window 对象的一个部分,可通过 window.location 属性来访问

属性名 作用
hash设置或返回从井号 (#) 开始的 URL(锚)。
host设置或返回主机名和当前 URL 的端口号。
hostname设置或返回当前 URL 的主机名。
href设置或返回完整的 URL。
pathname设置或返回当前 URL 的路径部分。
port设置或返回当前 URL 的端口号。
protocal设置或返回当前 URL 的协议。
search设置或返回从问号 (?) 开始的 URL(查询部分)。

2、为什么 window.location.search 为空?

如果URL中“?”之前有一个“#”比如:“http://localhost:8080/#/home/index/772?route=%2Fhome%2Findex”,
那么使用window.location.search得到的就是空(“”)。
因为“?route=%2Fhome%2Findex”是属于“#/home/index/772?route=%2Fhome%2Findex”这个串字符的,
也就是说查询字符串search只能在取到“?”后面和“#”之前这个区间的内容,如果“#”之前没有“?”,search取值为空。

3、采用正则表达式获取地址栏参数

function getUrlSearch(name) {
  // 未传参,返回空
  if (!name) return null;
  // 查询参数:先通过search取值,如果取不到就通过hash来取
  var after = window.location.search;
  after = after.substr(1) || window.location.hash.split('?')[1];
  // 地址栏URL没有查询参数,返回空
  if (!after) return null;
  // 如果查询参数中没有"name",返回空
  if (after.indexOf(name) === -1) return null;
 
  var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');
  // 当地址栏参数存在中文时,需要解码,不然会乱码
  var r = decodeURI(after).match(reg);
  // 如果url中"name"没有值,返回空
  if (!r) return null;
 
  return r[2];
}
 
// 调用方法
getUrlSearch("参数名");
 
// 举例1:若地址栏URL为:abc.html?id=123&name=池子&url=http://www.baidu.com
console.log('地址栏参数id',getUrlSearch("id"));
console.log('地址栏参数name',getUrlSearch("name"));
console.log('地址栏参数url',getUrlSearch("ursl"));
// 123
// 池子(不解码此处是乱码)
// null
 
 
// 举例2:若地址栏URL为:abc.html
console.log('地址栏参数id',getUrlSearch("id"));
// null

4、js replace(a,b)之替换字符串中所有指定字符的方法

var str = 'abcadeacf';
var str1 = str.replace('a', 'o');//打印结果: obcadeacf

var str2 = str.replace(/a/g, 'o');
alert(str2);  打印结果: obcodeocf,

此处replace的第一个参数为正则表达式,/g是全文匹配标识

      this.urlfoot = tools.getUrlSearch("route");
      if(this.urlfoot) {
        this.urlfoot = this.urlfoot.replace(/%2F/g, "/");
      }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值