6

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

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

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

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

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

在 IE 和 Firefox 中,该方法就像一个魅力,但 Safari 和 Chrome 确实为更改的 url 创建了一个历史记录项。我发现了很多示例如何在使用哈希进行这样的导航时创建历史项目,但我想以另一种方式进行。有什么线索吗?

4

3 回答 3

3

在这一点上似乎没有解决方案。

于 2009-09-10T06:20:37.920 回答
3

现在可以按预期工作:

Safari [5.1.7] 上,location.replace() 按预期工作 - URL 被替换,没有任何内容添加到后退按钮的队列中,也没有任何内容添加到历史菜单中。

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


让这件事变得棘手的是有两个不同的历史队列——历史菜单和后退/前进按钮。单击并按住后退和前进按钮以查看其队列并与历史菜单进行比较。

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

于 2012-08-26T00:05:01.763 回答
0

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

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

于 2009-07-31T13:38:21.577 回答