我正在寻找一种解决方案,使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/