【问题标题】:Refreshing current pages via js adds to BackButton history in chrome通过js刷新当前页面添加到chrome中的后退按钮历史记录
【发布时间】:2021-10-01 21:16:32
【问题描述】:

我在 iframe 刷新它的父级时遇到了一个奇怪的问题:当我刷新包含页面时,直接通过 window.parent 或通过发送给父级的消息和父级使用 window.location.reload (或 window.location=window.location 或任何其他各种刷新当前页面的方式),后退按钮历史记录会获得一个新条目,所以如果我继续这样做,page1, page1, page1, page1。

这不会发生在我的简化测试页面上,它根本不会发生在 FireFox 中。 chrome://history 中只有一个条目。

如果我使用开发工具添加链接,使用调用 window.location.reload 的 onclick 事件然后单击它,如果我使用 js 添加链接,然后调用点击事件,就可以了。

我的常规页面和我的测试页面之间唯一明确的区别是我的测试页面上没有一堆 Telerik 控件(radscriptmanager、radajaxmanager、radwindow 管理器)。

【问题讨论】:

  • 我没有解决办法,但我不清楚您是否想要多个历史记录,以及每个浏览器中发生了什么。 Chrome 中根本没有历史记录? FF 中的 1 个条目?只是在所有问题上都不太清楚。
  • @wazz:Chrome 有不需要的历史记录……所以,在 Chrome 中,我可以很容易地在十几个“页面”的后退按钮中拥有一个“历史记录”,实际上只是一页,而 FF 会显示只有一页。

标签: javascript google-chrome iframe webforms


【解决方案1】:

我建议从History API 尝试replaceState。您可以在不影响返回按钮的情况下强制更改 URL。

history.replaceState() 的操作与 history.pushState() 完全相同,只是 replaceState() 修改当前历史条目而不是创建新条目。

当您想要更新当前历史条目的状态对象或 URL 以响应某些用户操作时,

replaceState() 特别有用。

历史 API has good browser support 这些天。

【讨论】:

  • 我的问题不在于当前的 URL/标题,我的问题是我刚刚刷新页面时正在添加历史记录。
  • 您可以使用相同的 API 通过检查历史堆栈并删除重复条目来修复它。我不知道为什么重新加载首先会添加到状态,但它应该很容易在加载时更正。
  • 尽我所能告诉历史 API 不允许您删除条目
猜你喜欢
  • 1970-01-01
  • 2023-04-08
  • 2011-02-13
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
相关资源
最近更新 更多