温馨提示:本文翻译自stackoverflow.com,查看原文请点击:javascript - How can I get query string values in JavaScript?
javascript url plugins query-string

javascript - 如何通过原生javascript获取地址栏参数?

发布于 2020-04-07 10:09:42

是否有不通过jquery等插件来获取地址栏参数的原生javascrpt方法?

如果有,该怎么弄?如果没有,那需要什么插件呢?


查看更多

提问者
Unknown
被浏览
17
community wiki 2019-08-07 03:12

更新:2018年9月

您可以使用简单且具有不错(但不完整)浏览器支持的URLSearchParams

const urlParams = new URLSearchParams(window.location.search); const myParam = urlParams.get('myParam'); 

原版的

为此,您不需要jQuery。您可以只使用一些纯JavaScript:

function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, '\\$&'); var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, ' ')); } 

用法:

// query string: ?foo=lorem&bar=&baz var foo = getParameterByName('foo'); // "lorem" var bar = getParameterByName('bar'); // "" (present with empty value) var baz = getParameterByName('baz'); // "" (present with no value) var qux = getParameterByName('qux'); // null (absent) 


注意:如果一个参数多次出现(?foo=lorem&foo=ipsum),您将获得第一个值(lorem)。对此没有标准,用法也有所不同,例如参见以下问题:重复的HTTP GET查询键的权威位置
注意:该功能区分大小写。如果您希望使用不区分大小写的参数名称,请在RegExp中添加'i'修饰符


这是基于新的URLSearchParams规范的更新,目的是更简洁地达到相同的结果。请参阅下面标题为“ URLSearchParams ”的答案