【问题标题】:location.hash and back historylocation.hash 和返回历史
【发布时间】:2012-07-13 08:02:29
【问题描述】:

是否可以调用函数来防止浏览器在更改哈希值时记录回溯历史条目?

我正在编写一个简单的 javascript 库,它可以在用户浏览每张图片时更改浏览器 url 而无需重新加载页面。

这是通过将 location.hash 设置为图像的唯一 ID 来完成的。

window.location.hash = imageID;

问题是当用户点击浏览器后退按钮时,他们必须像加载页面一样向后移动每张图片。

如果他们使用图库旋转了 20 张图片,他们必须点击返回 21 次才能返回上一页。

如何防止使用 javascript 记录回溯历史?

【问题讨论】:

    标签: javascript browser-cache hashcode


    【解决方案1】:

    window.location.replace 将允许您设置 url 而无需将其添加到浏览器历史记录中。

    var baseUrl = window.location.href.split('#')[0];
    window.location.replace( baseUrl + '#' + imageID );
    

    documentation

    【讨论】:

    • 虽然这也回答了我的问题,但我还是把答案给了charles,因为他先回答了。谢谢。
    • @GeorgeFilippakos 它不是那样工作的 - 接受的答案应该是最能回答你问题的答案。显然这个更好。
    • 您甚至不需要计算基本 URL。你可以只到 window.location.replace('#' + imageID);
    【解决方案2】:

    您可以使用replaceState()

    在更改哈希之前保存历史记录,然后更改哈希,最后将历史记录替换为您保存的历史记录。

    您也可以使用popState Event

    【讨论】:

    • 感谢您为我指明正确的方向。这种方法还允许我完全取消 # :)
    猜你喜欢
    • 1970-01-01
    • 2018-12-09
    • 1970-01-01
    • 2012-10-28
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-08
    相关资源
    最近更新 更多