在JavaScript中,获取地址栏URL参数通常可以通过以下几种方法实现:
URLSearchParams
接口URLSearchParams
接口提供了方便的方法来处理URL中的查询字符串。
示例代码:
// 假设当前URL为 "http://example.com/?name=John&age=30"
// 获取查询字符串
const queryString = window.location.search;
// 创建URLSearchParams对象
const urlParams = new URLSearchParams(queryString);
// 获取特定参数
const name = urlParams.get('name'); // "John"
const age = urlParams.get('age'); // "30"
console.log(name, age);
优势:
通过正则表达式匹配查询字符串中的参数。
示例代码:
function getQueryParamByName(name) {
const regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)');
const results = regex.exec(window.location.href);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, ' '));
}
// 使用示例
const name = getQueryParamByName('name'); // "John"
const age = getQueryParamByName('age'); // "30"
console.log(name, age);
优势:
通过字符串操作手动解析查询字符串。
示例代码:
function getQueryParams() {
const queryString = window.location.search.substring(1);
const params = new Map();
queryString.split('&').forEach(param => {
const [key, value] = param.split('=');
params.set(decodeURIComponent(key), decodeURIComponent(value || ''));
});
return params;
}
// 使用示例
const params = getQueryParams();
const name = params.get('name'); // "John"
const age = params.get('age'); // "30"
console.log(name, age);
优势:
URLSearchParams.get()
方法时,如果参数不存在会返回null
,需要进行判断处理。decodeURIComponent
函数。URLSearchParams
可以处理重复参数,返回一个迭代器。通过以上方法,你可以根据具体需求选择最适合的方式来获取URL参数。
领取专属 10元无门槛券
手把手带您无忧上云