# 返回按钮历史记录未正常工作

**URL:** https://meta.discourse.org/t/back-button-history-not-properly-working/122183
**Category:** Bug
**Created:** [2019年七月5日 15:41 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183 "2019-07-05T15:41:03Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![justin](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/justin/32/157614_2.png) [@justin](https://meta.discourse.org/u/justin)
#### Post date: [2019年七月5日 15:41 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/1 "2019-07-05T15:41:04Z")

</div>

就在过去两天，我遇到了以下问题：

- 从“最新”页面进入某个主题
- 阅读片刻后返回“最新”页面
- 进入另一个主题
- 点击返回按钮，却将我带到之前浏览的第一个主题，而不是“最新”页面

我在 Safari（iOS，实际上是 iPadOS 公开测试版 1）和 Mac 版 Firefox 上都遇到了这个问题。

我不确定这是否是两天前才出现的情况，但有可能我记错了。

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [2019年七月5日 15:44 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/2 "2019-07-05T15:44:19Z")

</div>

我刚才试了一下，但对我来说似乎不起作用。对你来说，是每次都能 100% 成功，还是偶尔才行？

---

<div class="post-metadata">

### Author: ![rorycb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rorycb/32/423647_2.png) [@rorycb](https://meta.discourse.org/u/rorycb)
#### Post date: [2019年七月5日 17:22 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/3 "2019-07-05T17:22:15Z")

</div>

过去几天我也一直看到这个情况，但我还没能确定复现步骤——起初我还以为是自己看错了 🙂

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [2019年七月5日 17:23 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/4 "2019-07-05T17:23:12Z")

</div>

我们的新历史记录 API 修复可能尚未考虑到某种链接。如果有人能帮助我们隔离它，我们将不胜感激！

---

<div class="post-metadata">

### Author: ![zogstrip](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/zogstrip/32/512781_2.png) [@zogstrip](https://meta.discourse.org/u/zogstrip)
#### Post date: [2019年七月5日 17:31 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/6 "2019-07-05T17:31:14Z")

</div>

> [@justin](#):
>
> 我在 Safari for iOS（实际上是 iPadOS **公开测试版 1** ）和 Firefox for Mac 上看到了这种行为。

这仅发生在测试版上吗？因为我们不支持测试版操作系统。

---

<div class="post-metadata">

### Author: ![rorycb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rorycb/32/423647_2.png) [@rorycb](https://meta.discourse.org/u/rorycb)
#### Post date: [2019年七月5日 17:32 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/7 "2019-07-05T17:32:27Z")

</div>

我在 macOS 10.14.5 和最新版的 Chrome 上遇到了这个问题。

---

<div class="post-metadata">

### Author: ![rorycb](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rorycb/32/423647_2.png) [@rorycb](https://meta.discourse.org/u/rorycb)
#### Post date: [2019年七月5日 17:37 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/8 "2019-07-05T17:37:29Z")

</div>

我一直在这里玩了一会儿——我无法提供确切的步骤，但通过随机选择一个主题、打开它、滚动页面、点击返回，然后再选择另一个随机主题、打开它、滚动页面并再次点击返回，我大约每 5 次（或更多）就能触发一次这个问题。相当频繁地，它会返回到第一个主题，而不是主题列表。

这不算是一个很好的复现案例，但确实通过这种方式经常遇到。发生时控制台也没有任何错误。

编辑：当问题出现时，你可以观察点击返回时的 URL。它开始时是 [meta.discourse.org/，但在列表几乎立即加载后，URL](http://meta.discourse.org/%EF%BC%8C%E4%BD%86%E5%9C%A8%E5%88%97%E8%A1%A8%E5%87%A0%E4%B9%8E%E7%AB%8B%E5%8D%B3%E5%8A%A0%E8%BD%BD%E5%90%8E%EF%BC%8CURL) 会被重写为你刚才所在的帖子的 URL。

编辑 2：我实际上可以通过点击这个主题、向上滚动，然后立即点击返回（我的鼠标上设置了返回按钮——也许这就是我能轻松触发的原因）来几乎持续地触发它——这看起来确实是某个返回值的时间问题。

编辑 3：可以持续复现：点击任意主题，在它完全加载之前点击返回——在主题列表加载后，URL 会被重写为你刚刚离开的帖子的 URL。

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [2019年七月5日 17:53 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/9 "2019-07-05T17:53:45Z")

</div>

啊，原来是加载速度的问题。谢谢，这很有帮助。

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [2019年七月5日 19:55 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/10 "2019-07-05T19:55:45Z")

</div>

这应该可以解决问题：

> <https://github.com/discourse/discourse/commit/de6edf9e4e5675db0e4bf13000402ec60ae01cd3>
>
> See related topic:
> https://meta.discourse.org/t/back-button-history-not-properly…-working/122183
> 
> The issue here is the transition was not completing properly which meant
> if you backed out of a topic quickly and entered a new one, hitting back
> in the second topic would sometimes take you to the previous one instead
> of back to the topic list.

我没想到这个问题与最近的 history 变更无关，实际上是由最近合并的 [commit](https://github.com/discourse/discourse/commit/71bf9ec1b23a38396d92caaa40f2d43ef6f2b548) 中添加的新 `willTransition` 引起的。

我想我们应该始终记住在 `willTransition` 方法中 `return true`！

---

<div class="post-metadata">

### Author: ![eviltrout](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/eviltrout/32/5275_2.png) [@eviltrout](https://meta.discourse.org/u/eviltrout)
#### Post date: [2019年七月6日 22:00 UTC](https://meta.discourse.org/t/back-button-history-not-properly-working/122183/13 "2019-07-06T22:00:11Z")

</div>

本主题在 26 小时后自动关闭。不再允许新回复。
