diff options
author | Thedro Neely <thedroneely@gmail.com> | 2022-02-09 22:02:54 -0500 |
---|---|---|
committer | Thedro Neely <thedroneely@gmail.com> | 2022-02-09 22:02:54 -0500 |
commit | 1ad436910429e307d0df98d3d0411ae620701b32 (patch) | |
tree | 87e7b0d34dc6f58a0b0e39e9a0accfa849fc6c63 /public | |
parent | 86e53bc12c777ca2cdebf64ab3c33c5230ad6808 (diff) | |
download | thedroneely.com-1ad436910429e307d0df98d3d0411ae620701b32.tar.gz thedroneely.com-1ad436910429e307d0df98d3d0411ae620701b32.tar.bz2 thedroneely.com-1ad436910429e307d0df98d3d0411ae620701b32.zip |
public/js/app: Manual history scroll restoration
Chromium based scroll restoration behavior is strange - assume
manual control.
Diffstat (limited to 'public')
-rw-r--r-- | public/js/app.js | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/public/js/app.js b/public/js/app.js index 814426a..2e61595 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -27,14 +27,15 @@ url = window.location.href.split('#')[0]; var settings = { pager: {} }; window.addEventListener('load', function(event) { + if (history.scrollRestoration) { history.scrollRestoration = 'manual'; } if (localStorage['settings']) { settings = JSON.parse(localStorage['settings']); } if (window.location.href.indexOf("#") >= 0) { - settings['pager'][url] = window.pageYOffset + 1; + settings['pager'][url] = window.pageYOffset; localStorage['settings'] = JSON.stringify(settings); return; } - if (settings['pager'][url]) { window.scrollTo(0, settings['pager'][url]); return; } - settings['pager'][url] = window.pageYOffset + 1; + if (settings['pager'][url] > 0) { window.scrollTo(0, settings['pager'][url]); return; } + settings['pager'][url] = window.pageYOffset; localStorage['settings'] = JSON.stringify(settings); }); @@ -119,6 +120,7 @@ window.addEventListener('scroll', function(event) { var velocity = previousPosition - currentPosition; settings['pager'][url] = currentPosition; + localStorage['settings'] = JSON.stringify(settings); if (scrolls > 3) { if (velocity > 75 || currentPosition < navbarHeight) { @@ -128,8 +130,6 @@ window.addEventListener('scroll', function(event) { } else if (currentPosition > navbarHeight) { runOnce(function () { addClass(navbar, 'headroom'); }); } - - localStorage['settings'] = JSON.stringify(settings); } previousPosition = currentPosition; |