From 95b3b09cbc7e0b75a136f45d8ed285b3b86753b4 Mon Sep 17 00:00:00 2001 From: rr- Date: Sun, 12 Jun 2016 21:58:05 +0200 Subject: [PATCH] client/router: remember scroll position --- client/js/main.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/client/js/main.js b/client/js/main.js index ceca26bc..2b36ab8e 100644 --- a/client/js/main.js +++ b/client/js/main.js @@ -5,15 +5,14 @@ const misc = require('./util/misc.js'); const router = require('./router.js'); -const origPushState = router.Context.prototype.pushState; -router.Context.prototype.pushState = function() { - window.scrollTo(0, 0); - origPushState.call(this); -}; +history.scrollRestoration = 'manual'; router.exit( /.*/, (ctx, next) => { + ctx.state.scrollX = window.scrollX; + ctx.state.scrollY = window.scrollY; + ctx.save(); views.unlistenToMessages(); if (misc.confirmPageExit()) { next(); @@ -26,6 +25,12 @@ router.enter( (ctx, next) => { mousetrap.reset(); next(); + window.requestAnimationFrame( + () => { + window.scrollTo( + ctx.state.scrollX || 0, + ctx.state.scrollY || 0); + }); }); let controllers = [];