【问题标题】:Find out where in browser history the user is找出用户在浏览器历史记录中的位置
【发布时间】:2012-10-15 12:44:47
【问题描述】:

我知道我使用history 对象访问浏览器历史记录,具体来说,我可以使用history.back();history.forward();history.go(item-number)(或history.go(url))。我正在尝试确定用户当前在浏览器历史记录中的位置。

例如,Firefox 可能支持从历史记录中访问单个 url,但这不是我想要的,因为 20 个 url 的历史记录可能包含重复的 url。

请注意,我对项目中的历史记录不感兴趣,而是对任何用户会话中的浏览器历史记录感兴趣。

例如,用户打开浏览器并浏览了 20 个页面 - 因此历史记录包含 20 个对象。然后用户点击 back 按钮 4 次 - 最终在 20 个页面的第 16 个(或者更确切地说是 0..19 个页面的第 15 个)。有没有办法使用 JavaScript 获得这个当前的偏移量(16 或 15)?如果是,那么如何?

【问题讨论】:

  • 出于兴趣,您想将此信息用于什么目的?
  • @epascarello 谢谢,我知道。但它并没有回答我的问题。
  • 它回答了这个问题,文档中没有任何内容可以为您提供该数据。 :) 而 cmets 不是答案。他们要求和/或提供更多信息。

标签: javascript browser-history


【解决方案1】:

不知道这是否有帮助,但使用 HTML5,您可以为浏览器历史记录列表中的每个项目添加一个状态对象。这为您提供了一种可能的方法来保存每个项目的索引(即其首次创建时的 history.length 值),然后您可以稍后对其进行检查。

这是我发现的唯一对我有用的解决方案。

更多详情请见my solution here

【讨论】:

  • 只有在相应地使用 pushstate 的单页应用程序中才有可能。这不是 OP 想要的:“请注意,我对项目中的历史不感兴趣,而是对任何用户会话中的浏览器历史感兴趣。”
【解决方案2】:
history.length

返回当前历史的长度。

遗憾的是,没有方法可以确定你在哪里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 2017-08-17
    • 2010-11-01
    • 2011-11-14
    • 2013-05-21
    • 2011-02-04
    • 1970-01-01
    相关资源
    最近更新 更多