(function () { const cookiesDisabled = !navigator.cookieEnabled; if (cookiesDisabled) { document.cookie = "disabled"; document.cookie.indexOf("disabled"); return console.log("Pager is disabled due to cookie restrictions."); } let settings = { pager: {} }; const url = self.location.href.split("#")[0].split("?")[0]; const scrollRestore = (url) => { if (history.scrollRestoration) history.scrollRestoration = "manual"; if (localStorage["settings"]) { settings = JSON.parse(localStorage["settings"]); } const fragment = document.getElementById(location.hash.slice(1)); const fragmentInURL = self.location.hash.length > 0; if (fragmentInURL && document.body.contains(fragment)) { settings["pager"][url] = self.pageYOffset; localStorage["settings"] = JSON.stringify(settings); fragment.scrollIntoView(); self.addEventListener("load", function () { fragment.scrollIntoView(); }); return; } if (settings["pager"][url] > 0) { self.scrollTo(0, settings["pager"][url]); return; } settings["pager"][url] = self.pageYOffset; localStorage["settings"] = JSON.stringify(settings); }; const scrollTrack = (url) => { const currentPosition = self.pageYOffset; settings["pager"][url] = currentPosition; localStorage["settings"] = JSON.stringify(settings); }; const backTrack = (back, up, event) => { if (document.body.contains(up) && up.contains(event.target)) { event.preventDefault(); window.scrollTo(0, 0); } if (document.body.contains(back) && back.contains(event.target)) { if (history.length < 2) return; event.preventDefault(); history.go(-1); } }; self.addEventListener("DOMContentLoaded", function () { scrollRestore(url); self.addEventListener("click", function (event) { const up = document.getElementById("top"); const back = document.getElementById("back"); backTrack(back, up, event); }); }); self.addEventListener("scroll", function () { scrollTrack(url); }); self.addEventListener("hashchange", function () { scrollRestore(url); }); })();