如何在我的SPA中收听后退/前进按钮?

时间:2015-06-03 00:07:52

标签: javascript backbone.js browser-history html5-history

我有一个Backbone应用程序,它使用Backbone.history.start({pushState:true})。我根据URL更改渲染页面,后退和前进按钮工作正常,视图渲染得很好。

但是有一个问题,当您单击后退或前进按钮时,不会保留页面滚动位置。这让人感觉非常糟糕。

我以为我会保留一系列访问过的页面,我会为每个页面存储滚动位置。然后我会听用户点击后退/前进,我会加载适当的滚动位置。

但是。

我刚发现用户单击后退或前进按钮时无法判断。如果可以的话,我只会阅读上一页的存储滚动位置并应用它。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您可以使用以下内容将滚动位置存储为路径的一部分:

router.navigate('/my/route/scroll/[my_scroll_location]', {replace: true});

所以它不会添加新的历史记录点,但会修改当前的记录点。这样,当你点击“返回”时,它将转到上一个“页面”/路线,然后点击“前进”有足够的信息滚动到正确的位置。