单击后退按钮但不离开页面时防止自动滚动?

Posted

技术标签:

【中文标题】单击后退按钮但不离开页面时防止自动滚动?【英文标题】:Prevent auto-scroll when klicking back button but not leaving page? 【发布时间】:2012-12-20 23:05:09 【问题描述】:

查看此页面:http://goo.gl/X3tjr

当您点击帖子时,帖子会以动画形式出现,并且 URL 哈希值会发生变化。问题是当返回时,我想要一个平滑的动画回到用户单击帖子时的相同位置。现在只是跳回原位,简直不好看。

我读到了这个问题:Prevent browser from snapping to previous scroll position when pushing back button

但我的情况有点不同,因为页面实际上并没有重新加载(哈希只是消失了)。

是否可以摆脱自动滚动?

【问题讨论】:

您可以在dev.fristil.se/sdh/wp-content/themes/sdh/theme.js$(window).hashchange(function());删除或编辑此功能 不,我绝对不想那样做。该功能只是恢复帖子(隐藏当前帖子并显示其余帖子),然后它尝试将滚动位置设置为之前的动画,但由于浏览器自动滚动动画不会做任何事。 【参考方案1】:

我向您推荐 History.js: https://github.com/browserstate/History.js/

无需重新加载即可轻松更改网址和管理页面历史记录。

很遗憾,您无法捕捉到“返回”事件,因为它不存在,但您可以捕捉到 statechange

// Bind to StateChange Event
History.Adapter.bind(window,'statechange',function() // Note: We are using statechange instead of popstate
    var State = History.getState(); // Note: We are using History.getState() instead of event.state
    History.log(State.data, State.title, State.url);
);

我通常做的是捕捉用户的点击,如果没有点击就触发了状态更改,我假设用户返回。

【讨论】:

以上是关于单击后退按钮但不离开页面时防止自动滚动?的主要内容,如果未能解决你的问题,请参考以下文章

Kivy Scrollview 自动滚动到新文本。防止向上滚动

单击后退按钮时,React-router 滚动到顶部

iPhone :- 单击按钮时自动向下滚动

有没有办法防止 ScrollView 在 TextView 获得焦点时自动滚动?

在 WPF ListView 中,如何防止自动滚动?

按下后退按钮时如何保留可滚动区域的滚动位置?