获取location参数(附加获取cookie)

获取location

获取location的方法网上有很多种了,之前也自己写过很多种,这些方法各有利弊吧,这里我自己整理一个自己最常用的。
此方法主要实现了以下两个分支功能:

  • 实时获取
  • 传入一个字符串参数的时候,返回以此字符串做为键名的值
  • 不传入任何参数的时候,返回一个json对象,包含所有search参数的键值对
  • 既然是location相关的东西,就把这个方法直接做为一个location的属性方法吧

以下是源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

location.query = function(){
var query;
if(typeof arguments[0] === 'string'){
var reg = new RegExp('[?&]' + arguments[0] + '=([^&]+)','');
query = reg.test(location.search) ? RegExp.$1 : '';
}else{
query = {};
location.search.replace('?','').split('&').forEach(function(item){
item = item.split('=');
item[0] && (query[item[0]] = item[1] || '');
})
}
return query;
}

获取cookie

获取cookie的方法其实跟获取location本质上是一样的,就是操作字符串呗,我这里就不过多描述了,把上面稍微改动一下就出来了。
另外document.cookie本身是个字符串类型的值,所以我们就没办法把这个方法跟这个东西关联起来了,就直接定义一个全局方法吧。

以下是源码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

function getCookie(){
var query;
if(typeof arguments[0] === 'string'){
var reg = new RegExp('\\b' + arguments[0] + '=([^;]+)','');
query = reg.test(document.cookie) ? RegExp.$1 : '';
}else{
query = {};
document.cookie.split(';').forEach(function(item){
item = item.trim().split('=');
item[0] && (query[item[0]] = item[1] || '');
})
}
return query;
}

本文永久链接: https://www.mulianju.com/获取location上的参数/