Firefox - window.history.pushState()用实际空格替换URI编码的空格

时间:2018-03-10 22:39:26

标签: javascript firefox urlencode

在我的应用中,我使用window.history.pushState()方法在用户点击页面上的某些不同元素时被动更新网址查询参数。我在新查询参数的值上使用了encodeURIComponent(),但我发现在使用Firefox时,编码的空格没有被传递到网址中,尽管其他特殊字符也是正确的编码。这种行为

这是有问题的功能:

function updateUrlQueryParam(queryParamValue) {
  const encodedValue = encodeURIComponent(queryParamValue).toLowerCase();
  window.history.pushState({}, '', `index.html?cat=${encodedValue}`);
}

如果我用updateUrlQueryParam('Foo, bar')之类的方式调用它,则网址会更新为inventory.html?cat=foo%2c bar(请注意空格!)。但是,如果我在两行之间抛出console.log(encodedValue),我会得到格式正确的foo%2c%20bar

还有其他人遇到过这种行为吗?有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:0)

感谢@wing的回答 - 这显然是预期的行为。