首页 > 解决方案 > 是否可以在不向浏览器全局历史记录中添加条目的情况下更改 url 查询字符串?

问题描述

我有一个使用时间跨度的网页,并且我不断更新 url 查询字符串中的 startTime 和 endTime 以简化将同一时间范围链接到其他用户的过程。

然而,问题是 url 中更新的任何新时间都会在浏览器全局历史记录中添加一个新条目;创建 100 个基本相同页面的条目。

我能够防止历史状态和“后退按钮”功能通过 html 5 历史 api 变得疯狂,但无法更改全局历史。

如果基本 url 相同,是否可以替换全局历史记录中的条目?基本上:如果网址在“?”之前 是一样的,替换之前的条目。

我已经浏览了谷歌上的 N 个页面,以及 Bing 上的一些页面……小伙子们,我已经接近了我的极限。

这是浏览器历史记录的屏幕截图:

请注意,所有条目中涂黑的内容都是相同的,并且是我不喜欢在网上分享的信息。

编辑:这是关于浏览器全局历史记录(chrome 中的 ctrl + H)。我知道 window.history.replaceState,但它不会影响全局历史。参考 MDN 文档:

history.replaceState() 的操作与 history.pushState() 完全相同,只是 replaceState() 修改当前历史条目而不是创建新条目。请注意,这不会阻止在全局浏览器历史记录中创建新条目。

此外,当我在我们的 angularjs 应用程序中写入 url 时,我会使用 $state.go 到 current with notify: false 和 location:replace,但这仅在 url 相等时才有效。当查询字符串中的时间戳不同时,它不会将 url 读取为相等。 $State.go 与 location:replace

标签: angularjshtml

解决方案


推荐阅读