make jQuery scrollTop不要留下浏览器历史记录

时间:2015-03-06 13:30:25

标签: javascript jquery html scrolltop

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

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

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

但现在当我点击浏览器"返回"按钮它首先进入页面顶部。所以我实际上必须击中"返回"两次去上一页。

有没有办法让scrolltop不要离开导航历史记录?

1 个答案:

答案 0 :(得分:1)

当您点击同一页面时,您不希望页面保存#anchor链接吗?

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

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

这样可以节省历史记录中同一页面的倍数,但如果从其他页面导航,您仍会在网址中包含#anchor标记。

编辑:我自己在评论中提供了实际答案:“你想重写网址吗?你的问题更多的是关注锚标签。如果你想改变网址使用:window.history.replaceState()。{{3 }}“