javascript - 使 jQuery scrollTop 不留下浏览器历史记录

标签 javascript jquery html scrolltop

我正在寻找一种解决方案,使scrollTop不会在浏览器历史记录中留下记录。

当我第一次启动页面时,如果 url 具有带有内部 anchor 名称的参数,我希望浏览器转到该页面的特定部分。所以我这样做:

$('html,body').animate(
{
    scrollTop: $(".section[tagname='"+url_tagname+"']").offset().top
},
'slow');

但是现在当我点击浏览器的“后退”按钮时,它会首先转到页面顶部。所以我实际上必须按“后退”两次才能转到上一页。

有没有办法让scrolltop不留下导航历史记录?

最佳答案

您不希望页面在单击同一页面时保存#anchor 链接,对吗?

使用监听器,并防止默认链接操作。

$('a').on('click', function(event) {
    event.preventDefault();
    event.stopPropagation();
});

这将使您在历史记录中保留多个同一页面,但如果从其他页面导航,您的 URL 中仍将包含#anchor 标记。

编辑:实际答案是我自己在评论中提供的:“您想重写 URL?您的问题更多是针对 anchor 标记。如果您想更改 URL,请使用:window.history.replaceState()。https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

关于javascript - 使 jQuery scrollTop 不留下浏览器历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28899838/

相关文章:

javascript - 使用 Javascript onpaste 粘贴图像不适用于 IE,适用于 chrome

javascript - jQuery .prop ("disabled", false) 没有启用输入

jquery - 如何更改在 Tinymce 中添加图像的默认 html

javascript - Angular 2 将 HTML 注入(inject)内联模板

javascript - Javascript Map() 对象中项目的生命周期

javascript - Google 时区 API 的小时数不正确?

javascript - 如何同时在另一个字段中复制表单字段文本输入

javascript - 如何根据数据事件属性激活 jQuery UI Accordion?

javascript - 如何在 Angular 中设置 DfxParser

css - 不能在同一行显示list和h1标签