首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我在历史列表中的什么位置?

我在历史列表中的什么位置?
EN

Stack Overflow用户
提问于 2015-08-08 08:13:49
回答 2查看 44关注 0票数 1

我在这里的目标是在一个单页面应用程序中创建一个Javascript函数,它可以告诉我后退按钮是否可以做任何事情。

我认为window.history.length会对我有所帮助:如果长度与应用程序启动时的长度相同,则您处于“开始”,函数应该什么也不做。

但不是。假设应用程序中有一个内部链接,即#a。当你从一个新的标签启动应用程序时,浏览器是#,长度是1,你知道后退按钮不会做任何事情。如果您单击#a,您将转到#a,长度为2,您知道back按钮将起作用。

然后,不幸的是,如果您确实按下了back按钮,您将返回到#,但长度仍然是2,因为#a是在“未来的历史”中。

帮帮我。如何知道后退按钮当前是否处于“活动”状态?这简直要了我的命。

(这个问题有点复杂,因为历史上可能有一个完全不同的站点的URL。对我来说,这应该被视为“非活动”,即使后退按钮本身可以正常工作。)

EN

回答 2

Stack Overflow用户

发布于 2015-08-08 08:20:14

假设您的用户从不手动修改url,那么他们导航的唯一方式就是

  • 按应用程序中的按钮/链接,或
  • 按back按钮

因此,您可以使用自己的历史记录来跟踪这一点。每次点击一个按钮时,存储它所在的页面和被点击的按钮(可能在本地存储中)。然后,当它再次加载时,您可以通过点击按钮/链接或返回来简单地测试是否到达了用户现在所在的位置。如果是通过回击,则减少您的历史记录。如果您没有记录历史记录,您知道后退按钮要么不起作用,要么转到不同的站点。

票数 0
EN

Stack Overflow用户

发布于 2015-08-08 08:20:43

解决方案是将路由更改存储在应用程序中,并保留自己的状态历史记录。这是因为以下原因:

出于安全原因,history对象不允许非特权代码访问会话历史记录中其他页面的URL,但允许它导航会话历史记录。

要在angular中做到这一点,您需要使用$locationChangeSuccess事件。参见:用于检测后退按钮的How to detect browser back button click event using angular?,如果不是后退按钮,只需将其附加到您跟踪的数组中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31888306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档