From 8183dc64358250280a987a698379fc9637a4c3d0 Mon Sep 17 00:00:00 2001 From: asolove Date: Fri, 14 Jan 2011 13:16:23 -0500 Subject: [PATCH 1/3] Keep track of reader's place across visits. --- js/bibliotype.js | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/js/bibliotype.js b/js/bibliotype.js index 30c9290..c9e7f91 100644 --- a/js/bibliotype.js +++ b/js/bibliotype.js @@ -273,5 +273,34 @@ $('body').removeClass('bg_grid'); menuSet(); }); + + + // ------------------------------------- + // Persistence + // + if('localStorage' in window && window['localStorage'] !== null){ + var store = window.localStorage, + scrollPercentage = store.getItem('scrollPercentage'); + + function pageHeight() + { + return $('html').height() - $('body').height(); + }; + + if(scrollPercentage) { + $('body').animate({scrollTop: pageHeight() * scrollPercentage }); + } + + var settingScroll = false; + + $(window).scroll(function(){ + if(settingScroll){ + clearTimeout(settingScroll); + } + settingScroll = setTimeout(function(){ + store.setItem('scrollPercentage', $('body').scrollTop()/pageHeight()); + },100); + }); + } - }) + }); From 22c3b09cd3a972a40e837c40853f117301f3744a Mon Sep 17 00:00:00 2001 From: asolove Date: Fri, 14 Jan 2011 14:09:36 -0500 Subject: [PATCH 2/3] Maintain reader's position when changing font sizes mid-read. --- js/bibliotype.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/js/bibliotype.js b/js/bibliotype.js index c9e7f91..dd8d662 100644 --- a/js/bibliotype.js +++ b/js/bibliotype.js @@ -65,6 +65,7 @@ // function menuSet() { + $('menu').trigger('change'); $('menu li').removeClass('highlight'); var classList1 = $('body').attr('class').split(/\s+/); @@ -284,7 +285,7 @@ function pageHeight() { - return $('html').height() - $('body').height(); + return $('html').height() - $('window').height(); }; if(scrollPercentage) { @@ -298,9 +299,14 @@ clearTimeout(settingScroll); } settingScroll = setTimeout(function(){ - store.setItem('scrollPercentage', $('body').scrollTop()/pageHeight()); + scrollPercentage = $('body').scrollTop()/pageHeight(); + store.setItem('scrollPercentage', scrollPercentage); },100); }); + + $('menu').bind('change', function(){ + $('body').scrollTop(pageHeight()*scrollPercentage); + }); } }); From ed8585db386166926546d275ec116c55757e7284 Mon Sep 17 00:00:00 2001 From: asolove Date: Fri, 14 Jan 2011 23:23:09 -0500 Subject: [PATCH 3/3] More accurately resume reader's place. --- js/bibliotype.js | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/js/bibliotype.js b/js/bibliotype.js index dd8d662..7e58ce4 100644 --- a/js/bibliotype.js +++ b/js/bibliotype.js @@ -281,15 +281,12 @@ // if('localStorage' in window && window['localStorage'] !== null){ var store = window.localStorage, + pageHeight = $('body').height(), scrollPercentage = store.getItem('scrollPercentage'); - function pageHeight() - { - return $('html').height() - $('window').height(); - }; if(scrollPercentage) { - $('body').animate({scrollTop: pageHeight() * scrollPercentage }); + $('body').animate({scrollTop: pageHeight * scrollPercentage }); } var settingScroll = false; @@ -299,13 +296,14 @@ clearTimeout(settingScroll); } settingScroll = setTimeout(function(){ - scrollPercentage = $('body').scrollTop()/pageHeight(); + scrollPercentage = $('body').scrollTop()/pageHeight; store.setItem('scrollPercentage', scrollPercentage); },100); }); $('menu').bind('change', function(){ - $('body').scrollTop(pageHeight()*scrollPercentage); + pageHeight = $('body').height(); + $('body').scrollTop(pageHeight*scrollPercentage); }); }