从历史记录和浏览器中删除哈希位置按钮

时间:2018-01-02 01:26:06

标签: javascript

我有一个项目,我必须从列表中滚动到特定图像。这些图像是延迟加载的(因为它们都是高分辨率)。

我目前的做法是为每个人提供一个内部链接:

<a name="photo1"><img ... /></a>

当我点击缩略图查看原始照片时,我点击了一下:

location.hash = "#photo1"

问题是当我向前和向后点击浏览器时,页面不会返回到prev页面,而是返回到之前点击的任何照片链接

如何从历史记录中删除所有哈希?

1 个答案:

答案 0 :(得分:2)

我认为,您最好的选择是使用JavaScript手动滚动到目标元素。

使用原生scrollIntoView跳转到您的元素:

document.getElementById('[id]').scrollIntoView(true);

您实际上可以在<a> href属性中执行此操作。

<a href="javascript:document.getElementById('[id]').scrollIntoView(true);">

然后,如果您愿意,可以手动添加哈希值,而无需添加新的历史记录条目。

window.location.replace("#[id]");

来源:

Making browsers ignore the URL hash when the back button is clicked

Scroll with anchor without # in URL

How to call JavaScript function instead of href in HTML