使jQuery scrollTop不离开浏览器历史记录

make jQuery scrollTop Not to leave browser history

本文关键字:浏览器 历史 记录 离开 不离 jQuery scrollTop      更新时间:2023-09-26

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

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

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

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

有没有一种方法可以让滚动条不留下导航历史?

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

使用侦听器,并阻止默认链接操作。

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

这将使您在历史记录中拥有多个相同页面,但如果从另一个页面导航,URL中仍会有#anchor标记。

编辑:我在评论中给出了实际答案:"你想重写URL吗?你的问题更多地是关于锚标记。如果你想更改URL,请使用:window.history.replaceState()。"。https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history"