angularjs - 是否可以在不向浏览器全局历史记录中添加条目的情况下更改 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
解决方案
推荐阅读
- c - C 在缓冲区中创建额外的字节
- html - 将代码从 ASP 转换为 ASP.NET
- mysql - 未定义变量:mysql whereNotIn
- python - 如何在 python 3 中删除此警告
- rest - Spring Boot Rest 服务下载包含多个文件的 zip 文件
- mysql - 如何在 Xampp 3.2.2(最新版本)中将我的 MySQL 版本升级到 5.7.7 或更高版本,Laravel MySQL 迁移中的错误
- sql-server - 每当 SaleOrderDetail 中的订单项发生更改时,触发器将更改日期和时间放在 Order 表的 LastModified 列中
- javascript - 使用 mustache.js 将数组数据渲染成表格行;坚持实施行编辑
- python - 无限生成器发出的并行异步任务
- asp.net-mvc - 在 MVC Core 中使用 TagHelper 链接到页面的指定部分