代码之家  ›  专栏  ›  技术社区  ›  Jan Jongboom

top.location.replace在safari/chrome中创建历史记录项

  •  6
  • Jan Jongboom  · 技术社区  · 16 年前

    现在我们有了一个照片库,它使用哈希值来确定当前向用户显示的图片,并支持将页面发送给朋友等。类似:

    http://url/photos/#photo-4

    当我们在单击下一个或上一个按钮后加载了相应的图片后,我们根据JS 1.1规范更改URL,使用:

    top.location.replace(url.url + hash);
    

    我们想要的行为是没有创建历史记录项,因此用户可以使用后退按钮离开照片库,而不是使用后退按钮查看以前的图片。

    在IE和火狐中,这个方法的工作方式很有魅力,但是Safari和Chrome确实为更改后的URL创建了一个历史项目。我已经找到了很多示例,当使用散列进行这种导航时,如何创建历史记录项,但我想用另一种方法来实现这一点。有什么线索吗?

    3 回复  |  直到 13 年前
        1
  •  3
  •   sirch    13 年前

    这项工作现在按预期进行:

    游猎 [5.1.7]location.replace()按预期工作,URL被替换,后退按钮队列中不添加任何内容,历史菜单中也不添加任何内容。

    [21.0.1180.82]location.replace()有点棘手,URL被替换,没有添加到后退按钮的队列中,但是 是否将项目添加到“历史记录”菜单 .


    使这一点变得棘手的是,有两个不同的历史队列“历史”菜单和后退/前进按钮。单击并按住后退和前进按钮,以查看其队列并与历史记录菜单进行比较。

    后退/前进按钮的历史队列绑定到活动选项卡。此外,即使清除“历史记录”菜单“至少”直到关闭选项卡,按钮历史记录也会保留。

        2
  •  3
  •   Jan Jongboom    16 年前

    目前似乎没有解决办法。

        3
  •  0
  •   Community Mohan Dere    8 年前