我有一个项目,我必须从列表中滚动到特定图像。这些图像是延迟加载的(因为它们都是高分辨率)。
我目前的做法是为每个人提供一个内部链接:
<a name="photo1"><img ... /></a>
当我点击缩略图查看原始照片时,我点击了一下:
location.hash = "#photo1"
问题是当我向前和向后点击浏览器时,页面不会返回到prev页面,而是返回到之前点击的任何照片链接
如何从历史记录中删除所有哈希?
答案 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