Use document element (base is deprecated).
Use timeout (updating URL hash, among others, resets scroll position).
This commit is contained in:
parent
710416015c
commit
45bf995773
1 changed files with 17 additions and 9 deletions
22
js/App.js
22
js/App.js
|
@ -135,18 +135,26 @@ App.prototype.changeToPage = function(page) {
|
|||
|
||||
// FIXME
|
||||
var active = $(".active");
|
||||
|
||||
// Save old position
|
||||
if (active.id == "list") {
|
||||
this.saveScrollTop = document.body.scrollTop;
|
||||
}
|
||||
|
||||
if(page == "#list") {
|
||||
document.body.scrollTop = this.saveScrollTop;
|
||||
} else {
|
||||
window.scroll(0, 0);
|
||||
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) {
|
||||
|
|
Reference in a new issue