location.hash和back history

时间:2012-07-13 12:59:18

标签: javascript browser-cache hashcode

是否有一个可以调用的函数来阻止浏览器在更改哈希值时记录后历史记录条目?

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

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

window.location.hash = imageID;

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

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

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

2 个答案:

答案 0 :(得分:30)

window.location.replace可让您设置网址,而无需将其添加到浏览器历史记录中。

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

documentation

答案 1 :(得分:4)

您可以使用replaceState()

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

或者,您可以使用popState Event