質問: function () { // ons.notification.alert({ message: 'tapped' }); navHome.pushPage('test.html'); //変更 }; }); ``` --- ``` Home Rorem Ipsum{{$index}} 5h Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ``` --- ``` 戻る test ``` PhoneGapにてapk化し、実機にて動作テストを行いました。 画面スクロールしてリストをクリックしsettings.htmlをpushPageした後、戻るボタンや戻るキーで戻ると、スクロールポジションが0になっています。 monaca.io + Monacaデバッガーでも同じことが確認できます。 monaca.ioでOnsen UI Tabbarプロジェクトを選んで新規作成し、page1.htmlを ``` Push New Page ``` と編集してスクロール縦幅を確保し、実機(今回テストしたのはAndroid4.1)からMonacaデバッガーで同じ現象が発生することを確認できました。 暫定的な対応として、ons-navigatorのprepushイベントでscrollTop値を取得。 postpopで値を書き戻すで元の場所を復元してます。 これはOnsenUIの不具合なのでしょうか。 それとも4.0~4.3のWebView側の問題だったりするのでしょうか。
回答: どうやらWebViewのバージョンに依存しているようです。 WebViewがdisplayプロパティのnone/block切り替えでスクロールポジションのリセットをしてしまうバージョンだと、pushPage後ポジションがリセットされるようです。 「pushPage/popPage」で「display:none/block」してますので、このケースに見事に当てはまり、リセットされてました。 症状が発生する端末で上記URLを開いてテストすれば、スクロールポジションがリセットされるのを確認しました。 OnsenUI + Android4.0~で、このケースに苦しめられている人は余り居ないのでしょうか? 4.4以上は症状が出ないため、気が付きにくいかもしれませんが。 それとも私がやっているようなons-page等をスクロールして次のページをpushPageするという流れが特殊なんでしょうか。 一覧 → 詳細のフローだと思うのですが。 ons-lazy-repeatを利用して、そこからpushPageすることは、一部Androidでは実質使用できない動作となっているように思います。 たとえば100アイテム分スクロールしてpushPageし戻ってきたらボジションリセットでは使い物になりませんから。