更改后退按钮指向的位置

Changing where the back button leads to

我正在开发一个网络应用程序,并希望使浏览器中的后退按钮更像应用程序。

用户通过这些步骤 post 一条消息: 列出所有消息-> 阅读一条消息-> 写回复-> 回复后返回消息

如果用户随后单击后退按钮,他将返回到他写回复的页面。首选操作是返回到所有消息的列表。

我尝试使用 HTML5 历史记录 API 删除 "write reply" 和 "read one message" 在 posting 之后的历史记录,但它没有似乎不可能做到这一点。

是否有任何其他方法可以让它表现得像我想要的那样,还是我应该保持原样?我知道你不应该乱用后退按钮,但我真的认为这会让它更合乎逻辑。

你可以尝试这样做:

用户回复后可以执行这个js

// 1) push a fake state in the history
  history.pushState({ foo: "test" }, "test", "test.html");

// 2) add a listener when the user press the back button
  window.addEventListener('popstate', function(event) {
      //redirect user where you want
      window.location.href = '...';
  }, false);
  • 请记住,@point1 代码会更改地址栏中的 URL,因此,如果您在查询字符串中使用带有某些片段或其他信息的 URL,则必须对付他们。
  • 对于代码@point2,如果您在单页网络应用程序中,则必须在完成此操作后删除侦听器。

但是这是一个可能的解决方案,但是在不知道环境的情况下我不知道是否可以满足您的要求。 希望对您有所帮助!