我正在寻找一种解决方案,让scrollTop不要在浏览器历史记录中保留记录。
当我第一次启动页面时,如果url有一个带有内部锚名称的参数,我希望浏览器转到它的特定部分。所以我这样做:
$('html,body').animate(
{
scrollTop: $(".section[tagname='"+url_tagname+"']").offset().top
},
'slow');
但现在当我点击浏览器"返回"按钮它首先进入页面顶部。所以我实际上必须击中"返回"两次去上一页。
有没有办法让scrolltop不要离开导航历史记录?
答案 0 :(得分:1)
当您点击同一页面时,您不希望页面保存#anchor链接吗?
使用侦听器,并阻止默认链接操作。
$('a').on('click', function(event) {
event.preventDefault();
event.stopPropagation();
});
这样可以节省历史记录中同一页面的倍数,但如果从其他页面导航,您仍会在网址中包含#anchor标记。
编辑:我自己在评论中提供了实际答案:“你想重写网址吗?你的问题更多的是关注锚标签。如果你想改变网址使用:window.history.replaceState()。{{3 }}“