如何强制浏览器不要使用JS将“逗号”转换为2C符号?

时间:2018-08-01 10:25:54

标签: javascript

我正在通过函数更改当前用户的路径:

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?


1 个答案:

答案 0 :(得分:2)

(复制并粘贴几条评论)

这可能归因于URLSearchParams及其toString方法的实现-但我们不知道,因为您没有向我们展示实际的情况。如果不是故意对逗号进行编码,而浏览器只是简单地自动将其编码-那么您将无能为力。

如果newRelativePathQuery已经包含编码版本,则可以将其替换回普通逗号。但是,如果使用history.pushState,那么创建URL本身的“其他方法”将无济于事。

由于调试输出显示newRelativePathQuery已经包含编码的逗号,因此您可以尝试将其替换回逗号,然后查看该“生存”是否被推入历史记录。