From 05ff3effd89f3b75443bfcfce4455902c783d27f Mon Sep 17 00:00:00 2001 From: tdro Date: Wed, 12 Oct 2022 19:43:11 -0400 Subject: static/js/pager: Keep it simple and restore on scroll change --- assets/js/index.js | 34 +++------------------------------- static/js/pager.ts | 40 ++++------------------------------------ 2 files changed, 7 insertions(+), 67 deletions(-) diff --git a/assets/js/index.js b/assets/js/index.js index 0e3f0a9..7a456ad 100644 --- a/assets/js/index.js +++ b/assets/js/index.js @@ -52,26 +52,6 @@ history.go(-1); } }; - const fragmentClear = (entries)=>{ - for(let entry = 0; entry < entries.length; entry++){ - if (self.location.hash) { - self.history.replaceState(null, "", url1); - } - } - }; - const fragmentRelease = (fragmentCallback)=>{ - try { - const fragmentObserver = new IntersectionObserver(fragmentCallback, { - threshold: 1.0 - }); - const fragments = document.querySelectorAll("[id]"); - for(let fragment = 0; fragment < fragments.length; fragment++){ - fragmentObserver.observe(fragments[fragment]); - } - } catch (error) { - console.log("The intersection observer is not supported", error); - } - }; self.addEventListener("DOMContentLoaded", function() { scrollRestore(url1); self.addEventListener("click", function(event) { @@ -80,19 +60,11 @@ backTrack(back, up, event); }); }); - let scrolls = 0; - let once = (action)=>{ - once = function() {}; - action(); - }; self.addEventListener("scroll", function() { scrollTrack(url1); - if (scrolls > 3) { - once(function() { - fragmentRelease(fragmentClear); - }); - } - scrolls++; + }); + self.addEventListener("hashchange", function() { + scrollRestore(url1); }); })(); (function() { diff --git a/static/js/pager.ts b/static/js/pager.ts index 411c3c5..01d40d7 100644 --- a/static/js/pager.ts +++ b/static/js/pager.ts @@ -53,29 +53,6 @@ } }; - const fragmentClear = (entries) => { - for (let entry = 0; entry < entries.length; entry++) { - if (self.location.hash) { - self.history.replaceState(null, "", url); - } - } - }; - - const fragmentRelease = (fragmentCallback) => { - try { - const fragmentObserver = new IntersectionObserver(fragmentCallback, { - threshold: 1.0, - }); - const fragments = document.querySelectorAll("[id]"); - - for (let fragment = 0; fragment < fragments.length; fragment++) { - fragmentObserver.observe(fragments[fragment]); - } - } catch (error) { - console.log("The intersection observer is not supported", error); - } - }; - self.addEventListener("DOMContentLoaded", function () { scrollRestore(url); self.addEventListener("click", function (event) { @@ -85,20 +62,11 @@ }); }); - let scrolls = 0; - - let once = (action) => { - once = function () {}; - action(); - }; - self.addEventListener("scroll", function () { scrollTrack(url); - if (scrolls > 3) { - once(function () { - fragmentRelease(fragmentClear); - }); - } - scrolls++; + }); + + self.addEventListener("hashchange", function () { + scrollRestore(url); }); })(); -- cgit v1.2.3