【问题标题】:remove hash location from history and browsers back button从历史记录和浏览器后退按钮中删除哈希位置
【发布时间】:2018-06-11 18:48:03
【问题描述】:

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

我目前的方法是为它们中的每一个建立一个内部链接:

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

当我点击缩略图查看原始照片时,我会通过以下操作获得点击:

location.hash = "#photo1"

问题是当我前后点击浏览器时,页面并没有回到上一页,而是回到之前点击过的任何照片链接

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

【问题讨论】:

    标签: javascript


    【解决方案1】:

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

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

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

    您实际上可以在 &lt;a&gt; 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

    【讨论】:

    • 这个解决方案对我不起作用,因为所有图像都是延迟加载的并且大小不同,一旦加载图像并且高于最小高度,所选缩略图就会消失在视图中
    • 你能举个例子吗?
    • 为了清楚起见,您的示例中的[id] 旨在替换文本?使实际调用类似于&lt;a href="javascript:document.getElementById('toc1').scrollIntoView(true);"&gt;?
    猜你喜欢
    • 2015-05-18
    • 2011-02-03
    • 1970-01-01
    • 2018-10-02
    • 2013-06-23
    • 2017-11-02
    • 2011-10-28
    • 2021-10-27
    • 1970-01-01
    相关资源
    最近更新 更多