首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JavaScript pushState在浏览器返回时不起作用

JavaScript pushState在浏览器返回时不起作用
EN

Stack Overflow用户
提问于 2021-01-19 23:48:59
回答 1查看 85关注 0票数 1

有关网址是example.com/news/。通过这个url加载的页面包含一些复选框和一个按钮。我使用对象筛选器,其中包含一些键,如checkbox1、checkbox2等,如果选中复选框,则键得到一个真值,如果未选中,则得到一个假值。

最后,有一个var overwriteURL,其中包含“一般老年人-青年”的值。

现在,当单击该按钮时,我希望脚本将页面加载到容器中,并将url更改为example.com/news/general- without youth/而不加载新站点。我通过以下代码来实现这一点:

代码语言:javascript
运行
复制
if(overwriteURL !== "" ) {
   history.pushState({ test: "test" }, null, "/news/" + overwriteURL + "/");
}

效果很好。正如Mozilla (https://developer.mozilla.org/de/docs/Web/Guide/DOM/Manipulating_the_browser_history)的文档用英语说的:如果我在脚本运行后导航到google.com,然后使用浏览器的后退按钮,URL-bar实际上应该包含更改的URL,所以example.com/news/general-老年人-青年/。但是它在pushState之前包含了原始URL,所以example.com/news/。但是,当我不导航到google.com,而是使用我想经常使用的后退按钮,然后前进按钮,直到它到达最新的历史条目,然后严格(改变) URLis显示在地址栏中。

哪里弄错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-20 00:32:02

我不知道怎么做,但我找到了解决办法。

我认为,问题似乎取决于var overwriteURL的内容。在真实的站点上,var有时包含一个字符和数字的混合物,并--分离值(例如:-一般的--老年人--U19-u16--按-)。

当我试验var overwriteURL的内容时,有时没有问题。最后,我替换了- by /,现在它工作得很好。例如,新的var overwriteURL看起来像general/老年人/U19/u16/press/。

因此,作为一个结论,似乎有一个问题,对许多-在URL中。

案子结案了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65801190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档