From 71b34f50de91ed336896caecfc6b4fba906ee22d Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Fri, 6 Mar 2015 12:29:42 +0100 Subject: [PATCH] Navigation preserve scroll height --- js/crep.js | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/js/crep.js b/js/crep.js index f56d3a3..f8f5907 100755 --- a/js/crep.js +++ b/js/crep.js @@ -12,12 +12,20 @@ function pageName(href) { return false } +function updateScrollData() { + history.state.scrollTop = $(document.body).scrollTop() + history.replaceState(history.state) +} + function pageSpecific(location) { if (pageName(location) == 'contact') { initializeMap() } + $(document).scroll(updateScrollData) } + + function actLink(ev) { var location = ev.currentTarget.href var page = pageName(location) @@ -43,7 +51,6 @@ function loadDoc(location, callback) { } var eventsLeft = 2 var html = '' - var mainContainer = $("#mainContainer") var oldHeight = mainContainer.height() @@ -69,6 +76,10 @@ function loadDoc(location, callback) { } } // Out + $(document).off('scroll', updateScrollData) + $(document.body).animate({ + scrollTop: $('.navbar-lower').height() + }, 'fast') $.get(location + '?c', function (data) { html = data events() @@ -77,19 +88,25 @@ function loadDoc(location, callback) { mainContainer.animate({ opacity: 0 }, 'fast', events) - $(document.body).animate({ - scrollTop: $('.navbar-lower').height() - }) - } function historyChange(ev) { - loadDoc(ev.state.loc) + loadDoc(ev.state.loc, function () { + if (ev.state.scrollTop > $('.navbar-lower').height()) { + $(document.body).animate({ + scrollTop: ev.state.scrollTop + }, 'fast') + } + }) } $(document).ready(function () { - dynamiseLinks(document) - pageSpecific(window.location.href) + dynamiseLinks(document.body) + var current = window.location.href + pageSpecific(current) + history.replaceState({ + loc: current + }, document.title, current) window.onpopstate = historyChange }) -- libgit2 0.21.2