首页 > 解决方案 > 如何强制浏览器不使用 JS 将“逗号”转换为 2C 符号?

问题描述

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

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 成为可能?


标签: javascript

解决方案


(复制并粘贴多条评论)

这可能是由于URLSearchParams它的toString方法实现 - 但我们不知道,因为你没有向我们展示它实际上是什么。如果这不是故意对逗号进行编码,而浏览器只是自动进行编码 - 那么您对此无能为力。

如果newRelativePathQuery已经包含编码版本,也许可以将它们替换回普通逗号。但是,如果history.pushState这样做,那么创建 URL 本身的“其他方式”对您没有多大帮助。

由于调试输出显示已经newRelativePathQuery包含编码的逗号,您可以尝试将它们替换回逗号,然后查看是否“幸存”被推送到历史记录。


推荐阅读