我正在嘗試創建一個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