From 45bf9957735cd9965879492128fd49e5213be8b5 Mon Sep 17 00:00:00 2001 From: Andy Valencia Date: Thu, 18 Feb 2016 20:58:07 -0800 Subject: [PATCH] Use document element (base is deprecated). Use timeout (updating URL hash, among others, resets scroll position). --- js/App.js | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/js/App.js b/js/App.js index ff92dad..cfac263 100644 --- a/js/App.js +++ b/js/App.js @@ -37,7 +37,7 @@ App.prototype.after_login = function(backend) { var url = window.location.hash; - if(url == "#list") { + if (url == "#list") { _this.setCurrentRead(); _this.changeToPage("#list"); } else if(url == "#reload") { @@ -135,18 +135,26 @@ App.prototype.changeToPage = function(page) { // FIXME var active = $(".active"); - if(active.id == "list") { - this.saveScrollTop = document.body.scrollTop; - } - - if(page == "#list") { - document.body.scrollTop = this.saveScrollTop; - } else { - window.scroll(0, 0); + + // Save old position + if (active.id == "list") { + this.saveScrollTop = document.documentElement.scrollTop; } + // Switch displays active.removeClass("active"); $(page).addClass("active"); + + if (page == "#list") { + var elem = document.documentElement; + var posit = this.saveScrollTop; + + // Restore old position, after display settles + setTimeout(function() { elem.scrollTop = posit; }, 500); + } else { + // Else top of page + window.scroll(0, 0); + } }; App.prototype.setColor = function(color) {