我正在通过函数更改当前用户的路径:
function setSomeValue(someValues) {
var query = '';
for (var i = 0; i < someValues.length; i++) {
query += someValues[i] + ',';
}
if ('URLSearchParams' in window) {
var searchParams = new URLSearchParams(window.location.search);
searchParams.set("paramName", query);
var newRelativePathQuery = window.location.pathname + '?' + searchParams.toString();
history.pushState(null, '', newRelativePathQuery);
}
}
如您所见,我正在向用户的位置添加新词,并希望新位置像这样:
www.site.com?paramName=value1,value2,
但是浏览器将我的逗号转换为%2C
,所以我得到了:
www.site.com?paramName=value1%2Cvalue2%2C
应该怎么做才能将逗号推送到URL?
答案 0 :(得分:2)
(复制并粘贴几条评论)
这可能归因于URLSearchParams
及其toString
方法的实现-但我们不知道,因为您没有向我们展示实际的情况。如果不是故意对逗号进行编码,而浏览器只是简单地自动将其编码-那么您将无能为力。
如果newRelativePathQuery
已经包含编码版本,则可以将其替换回普通逗号。但是,如果使用history.pushState
,那么创建URL本身的“其他方法”将无济于事。
由于调试输出显示newRelativePathQuery
已经包含编码的逗号,因此您可以尝试将其替换回逗号,然后查看该“生存”是否被推入历史记录。