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

时间:2018-06-19 12:30:48

标签: angularjs html5

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

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

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

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

我在Google上浏览了N个页面,在Bing上浏览了一些页面。

这是浏览器历史记录的屏幕截图: "Duplicate" entries in global history

请注意,所有条目中涂黑的内容都是相同的,是我不愿意在线共享的信息。

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

  

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

此外,当我在angularjs应用程序中写入url时,我使用$ state.go进行了更新,并使用notify:false和location:replace进行更新,但这仅在url相等时有效。当查询字符串中的时间戳不同时,它不会读取相等的url。 $State.go with location:replace

0 个答案:

没有答案