【问题标题】:jQuery: Replace window.history entryjQuery:替换 window.history 条目
【发布时间】:2016-09-08 07:32:24
【问题描述】:

我有一个网站www.mysite.com/entry/1 和div,当我点击一个按钮时它会打开。

当它打开时,我会创建一个window.history.pushState(),例如:

www.mysite.com/entry/1#12345678

我可以在这个打开的div中设置过滤器,所以每次设置过滤器时,哈希值都会发生变化,我会创建一个window.history.pushState("", "", url+newHash);

例如,当我这样做 10 次时,我的 window.history 中有 10 个不同的 URL。

是否可以覆盖它,以便我只有历史中最后一个 url-hash 值?

原因是,当我点击浏览器的返回按钮时,url应该是www.mysite.com/entry/1,我不想遍历所有的哈希值。

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery browser-history


    【解决方案1】:

    是的,您使用replaceState(MDN,spec)而不是pushState。

    【讨论】:

    • 但是我怎样才能只用 has-values 覆盖 url 而不是其他状态呢?
    • @Zwen2012:如果你使用replaceState,你会替换最上面的历史条目。例如,您将www.mysite.com/entry/1 条目替换为www.mysite.com/entry/1#12345678。您无法深入历史堆栈并更改数据,但根据您的问题,您不应该这样做。
    • 好的,那么问题是我的错。无论哈希值 URL 多久更改一次,我都需要返回到“www.mysite.com/entry/1”。因此,例如,我在历史记录中单击 10 个过滤器-> 10 个哈希值。当我现在点击浏览器历史时,我想去'www.mysite.com/entry/1'
    • @Zwen2012:然后在 URL 中已经包含哈希时使用 replaceState。
    • 对不起,我完全误解了replaceState的功能。现在我有了它,它可以工作了。谢谢!
    猜你喜欢
    • 2015-01-11
    • 2016-12-29
    • 2018-07-01
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    相关资源
    最近更新 更多