location.hash和back history

Geo*_*kos 15 javascript hashcode browser-cache

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

我正在编写一个简单的JavaScript库,当用户浏览每个图像时,它会更改浏览器URL而无需重新加载页面.

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

window.location.hash = imageID;
Run Code Online (Sandbox Code Playgroud)

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

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

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

jal*_*bee 30

window.location.replace 将允许您设置网址而不将其添加到浏览器历史记录中.

var baseUrl = window.location.href.split('#')[0];
window.location.replace( baseUrl + '#' + imageID );
Run Code Online (Sandbox Code Playgroud)

文件


Cha*_*les 5

您可以使用replaceState()

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

或者,您可以使用popState Event