Rot*_*075 1 javascript jquery html5-history
我想过滤掉URL中的特定参数.我有以下情况:
state参数我试过了什么
我知道我可以使用以下代码获取所有参数:
window.location.search
Run Code Online (Sandbox Code Playgroud)
但它会导致:
?folder=app&test=true&state=1
我尝试拆分网址,例如:
var url = '?folder=app&test=true&state=1';
url = url.split('&state=');
console.log(url);Run Code Online (Sandbox Code Playgroud)
但这不起作用.另外,因为每个请求中的state数字都是动态的.一个解决方案可能是删除url中的最后一个参数,但我也不知道是否会出现这种情况,因此我需要一些过滤机制,只会过滤掉
state=/*regex for a number*/
Run Code Online (Sandbox Code Playgroud)
要实现这一点,您可以将提供给页面的查询字符串转换为对象,删除state结果的属性 - 假设它存在 - 然后您可以将对象转换回准备使用的查询字符串pushState().像这样的东西:
var qsToObj = function(qs) {
qs = qs.substring(1);
if (!qs) return {};
return qs.split("&").reduce(function(prev, curr, i, arr) {
var p = curr.split("=");
prev[decodeURIComponent(p[0])] = decodeURIComponent(p[1]);
return prev;
}, {});
}
var qs = '?'; // window.location.search;
var obj = qsToObj(qs);
delete obj.state;
console.log(obj);
var newQs = $.param(obj);
console.log(newQs);Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>Run Code Online (Sandbox Code Playgroud)
感谢这个答案的查询字符串到对象逻辑.