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

JavaScript pushState does not work on browser going back

相关站点-url 是example.com/news/。通过此 url 加载的页面包含一些复选框和一个按钮。我使用对象 filter 和一些键,例如 checkbox1checkbox2 等,如果复选框是检查键获得 true-value,如果未选中键获得 false-value.

最后,有一个变量overwriteURL,其中包含值“general-seniors-youth”。

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

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 栏实际上应该包含已更改的 URL ,所以 example.com/news/general-seniors-youth/。但它确实包含了 pushState 之前的原始 URL,因此 example.com/news/。 但是当我不导航到 google.com 而是根据需要经常使用后退按钮然后使用前进按钮直到它到达最新的历史记录条目时,然后URL 显示在 URL 栏中。

哪里错了?

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

我认为,问题似乎取决于 var overwriteURL 的内容。在真实站点上,var 有时由字符和数字混合组成,并且 -- 用于分隔值(例如:-general--seniors-- u19--u16--按下-).

我在试验varoverwriteURL的内容时,有时没有问题。所以最后我用 / 替换了 -- 现在它完美地工作了。例如,新变量 overwriteURL 看起来像 general/seniors/u19/u16/press/.

因此,作为结论,URL.

中的许多 - 似乎都存在问题

案件结案!