window.location对象

对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。

属性名描述
href完成的url
host主机名和当前url的端口号
hash从#号开始的url(锚)
hostname当前url的主机名
port当前url的端口号
pathname当前url的路径部分
protocol当前url的协议
search从?开始的url(查询部分)

2.使用 window.location.href 获取参数对象集合

// 第一种方法
const parseUrlParams = (url) => {
  const params = {}
  if (!url || url === '' || typeof url !== 'string') {
    return params
  }
  const paramsStr = url.split('?')[1]
  if (!paramsStr) {
    return params
  }
  const paramsArr = paramsStr.replace(/&|=/g, ' ').split(' ')
  for (let i = 0; i < paramsArr.length / 2; i++) {
    const value = paramsArr[i * 2 + 1]
    params[paramsArr[i * 2]] =
      value === 'true' ? true : value === 'false' ? false : value
  }
  return params
};
let param = parseUrlParams(window.location.href).token // window.location.href = http://localhost:3000/#/home?
token=fdsafadsfas
console.log(param) // fdsafadsfas
// 第二种方法 (获取url某个参数的值)
const getValueByUrlParams = (paras) => {
  let url = window.location.href;
  var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
  var paraObj = {}
  var i, j
  for (i = 0; j = paraString[i]; i++) {
  paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") + 1, j.length);
  }
  var returnValue = paraObj[paras.toLowerCase()];
  if (typeof(returnValue) == "undefined") {
  return "";
  } else {
  return returnValue;
  }
};
let param = getValueByUrlParams("token")  // window.location.href = http://localhost:3000/#/home?
token=fdsafadsfas
console.log(param) // fdsafadsfas
————————————————
版权声明:本文为CSDN博主「心若向阳(* ̄︶ ̄)」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/agua001/article/details/126340762

3.通过window.location.search 获取参数集合(注意一个参数以及多个参数)

const getRequest = (url) => {
  // var url = window.location.search; //获取url中"?"符后的字串
  let theRequest = new Object();
  // 判断是否有问号
  if (url.indexOf("?") != -1) {
    // 把问号去掉
    var str = url.substr(1);
    // 判断是否有多个参数
    if(str.indexOf("&") != -1) {
      // 以&符分项组成数组
      let strs = str.split("&");
      for (var i = 0; i < strs.length; i++) {
        // 循环数组
        // theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
        // 每一项等号左边为属性,等号右边为属性的值,值需要使用 decodeURI() 函数对通过 escape() 或 url 编码过的字符串进行解码。
        theRequest[strs[i].split("=")[0]] = decodeURI(strs[i].split("=")[1]);
      }
    } else {
      // 只有一个参数
      let arr = str.split("=");
      theRequest[arr[0]] = arr[1];
    }
  };
  return theRequest;
};
let obj = getRequest(window.location.search);  // window.location.href = http://localhost:3000/#/home?
token=fdsafadsfas
console.log(obj) // {token: "fdsafadsfas"}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值