在Firefox中,当您使用window.history.pushState
时,它会自动为您编码URI。在其他浏览器(IE,Chrome,Safari)中,它没有。因此,如果您希望对URI进行编码,则需要自己进行编码(即使用encodeURI
) - 除非您使用的是Firefox。
要亲自查看此内容,请在Chrome开发者控制台和Firefox开发者控制台中运行此代码:
window.history.pushState({},'asdf','#spaces or percent twenties');
location.href;
// Firefox: "...#spaces%20or%020percent%20twenties"
// Other browsers: "...#spaces or percent twenties"
window.history.pushState
的{{3}}未指定对URI进行编码,因此我认为这是Firefox的错误。
与此同时,在统一之前,我需要一种解决方法来让Firefox发挥出色。有什么建议吗?