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

Jan*_*oom 6 safari location replace google-chrome

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

HTTP:// URL /照片/#照片4

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

top.location.replace(url.url + hash);
Run Code Online (Sandbox Code Playgroud)

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

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

小智 3

现在这按预期工作:

\n\n

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

\n\n

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

\n\n
\n\n

使这个棘手的是有两个不同的历史队列 \xe2\x80\x93 历史菜单和后退/前进按钮。单击并按住后退和前进按钮可查看其队列并与历史菜单进行比较。

\n\n

后退/前进按钮的历史队列与活动选项卡相关联。此外,即使您清除历史记录菜单 \xe2\x80\x93\xc2\xa0,按钮历史记录仍然保留,至少直到您关闭选项卡为止。

\n