我正在尝试创建一个Ember应用程序,其中路径之间的滚动位置被保留,为用户提供浏览时更愉快的体验。在Ember中保留滚动位置
预期结果
如果我滚动500像素下来/网页B,点击一个链接到/网页A,点击浏览器的后退按钮,我应该回到了500px的滚动顶部。
实际结果
当点击浏览器的后退按钮,滚动顶部等于/网页A的高度。
如何重现
git clone https://github.com/eTilbudsavis/ember-scroll-demo
cd ember-scroll-demo
npm install
ember serve
open http://localhost:4200/pageb
然后你一路滚动到底部,点击网页A链接,然后点击浏览器的后退按钮,你应该看到这个问题。
最后说明
我认为这种现象的原因是,当我点击浏览器的后退按钮,浏览器试图回到它离开这条道路之前所具有的位置滚动。由于Ember尚未呈现该视图,因此浏览器无法前往此处。它只能滚动到/ pagea的高度。
现在更棘手的是,如果我在浏览器的控制台上点击后手动设置滚动条顶部,也没有任何反应。看起来浏览器认为它是在正确的滚动顶部,即使它不是。如果我用鼠标单个滚动,浏览器会一直跳到它应该在的位置。
我希望我已经尽可能简洁地解释了这一点。否则,请随时询问更多细节。
谢谢!
我我的答案更新,它现在应该在这两个Firefox和Chrome浏览器。 – 2014-11-07 12:07:03
另一个答案,与mixin:http://reefpoints.dockyard.com/2014/05/05/preserve-scroll-position-in-ember-apps.html – givanse 2014-11-11 21:59:51
我试过那个,但它并不真的特别是在Chrome中正常工作。 – user3365242 2014-11-14 11:49:57