top.location.replace在Safari / Chrome中创建历史记录项

时间:2009-07-31 13:22:27

标签: safari replace google-chrome location

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

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

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

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

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

在IE和Firefox中,该方法的工作方式类似于魅力,但Safari和Chrome确实为更改的网址创建了历史记录项。我已经发现很多样本如何在使用哈希进行导航时创建历史项目,但我想以另一种方式执行此操作。任何线索?

3 个答案:

答案 0 :(得分:3)

此时似乎没有解决方案。

答案 1 :(得分:3)

现在按预期工作:

Safari [5.1.7]上,location.replace()按预期工作 - 更换网址,没有任何内容添加到后退按钮的队列中,也没有任何内容添加到历史记录菜单中。< / p>

Chrome [21.0.1180.82]上,location.replace()有点棘手 - 更换了网址并且没有任何内容添加到后退按钮的队列中,但确实添加了一个项目到历史菜单


令人困惑的是,有两个不同的历史队列 - 历史菜单和后退/前进按钮。单击并按住后退和前进按钮以查看其队列并与历史记录菜单进行比较。

后退/前进按钮的历史队列与活动选项卡相关联。此外,即使清除历史记录菜单,按钮历史记录仍然保留 - 至少在关闭选项卡之前。

答案 2 :(得分:0)

您是否考虑过使用window.location.hash = newHash分配哈希值而不是替换整个网址?

https://developer.mozilla.org/en/DOM/window.location