在我的应用中,我使用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
。
还有其他人遇到过这种行为吗?有关如何解决此问题的任何建议吗?
答案 0 :(得分:0)
感谢@wing的回答 - 这显然是预期的行为。