location.hash和back history

问题描述 投票:15回答:2

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

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

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

window.location.hash = imageID;

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

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

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

javascript browser-cache hashcode
2个回答
30
投票

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

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

documentation


4
投票

你可以使用replaceState()

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

或者你可以使用popState Event

© www.soinside.com 2019 - 2024. All rights reserved.