js获取地址栏参数

151 阅读1分钟

方法一

//获取url 参数
const getUrlKey = (name) => {
  return (
    decodeURIComponent(
      (new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(
        location.href
      ) || [, ''])[1].replace(/\+/g, '%20')
    ) || null
  )
}

// 使用
let code = getUrlKey('code')

方法二

//获取当前页面带参数的url
export const getQueryParams = (val: string, url = window.location.search) => {
  var queryString = url; // 获取查询字符串部分

  if (queryString) {
    var paramsArray = queryString.substring(1).split('&'); // 去除开头的'?'号,并按'&'进行切割成多个键值对

    var result = {};
    for (var i = 0; i < paramsArray.length; i++) {
      var param = paramsArray[i].split('='); // 根据等号进行切割成键和值

      var key = decodeURIComponent(param[0]); // 解码键名
      var valueStr = decodeURIComponent(param[1] || ''); // 解码值(如果没有则设置为空)
      var value = valueStr.split('?')[0]
      result[key] = value; // 存入结果对象中
    }

    return result[val];
  } else {
    return null; // 若无查询字符串,则返回null或者自定义默认值
  }
}

// let code = getQueryParams('code')

方法三

// h5页面获取页面传参
const functiongetQueryString = (name) => {
	const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
	const search = window.location.search.split('?')[1] || '';
	const r = search.match(reg) || [];
	return r[2];
}