aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/js/index.js20
-rw-r--r--static/js/pager.ts20
2 files changed, 21 insertions, 19 deletions
diff --git a/assets/js/index.js b/assets/js/index.js
index acdcd57..4ca5e4a 100644
--- a/assets/js/index.js
+++ b/assets/js/index.js
@@ -10,33 +10,33 @@
};
const key = "settings";
const url = self.location.href.split("#")[0].split("?")[0];
+ if (!localStorage[key]) localStorage[key] = JSON.stringify(settings);
const scrollRestore = function(url) {
if (history.scrollRestoration) history.scrollRestoration = "manual";
- if (localStorage[key]) settings = JSON.parse(localStorage[key]);
- const fragment = document.getElementById(location.hash.slice(1));
+ settings = JSON.parse(localStorage[key]);
+ const fragment = self.location.hash.slice(1) && document.getElementById(self.location.hash.slice(1));
const fragmentInURL = self.location.hash.length > 0;
if (fragmentInURL && document.body.contains(fragment)) {
settings["pager"][url] = self.pageYOffset;
localStorage[key] = JSON.stringify(settings);
fragment.scrollIntoView();
- self.addEventListener("DOMContentLoaded", function() {
+ return self.addEventListener("DOMContentLoaded", function() {
fragment.scrollIntoView();
});
- return;
}
if (settings["pager"][url] > 0) {
- self.scrollTo(0, settings["pager"][url]);
- return;
+ return self.scrollTo(0, settings["pager"][url]);
}
settings["pager"][url] = self.pageYOffset;
localStorage[key] = JSON.stringify(settings);
};
const scrollTrack = function(url) {
const currentPosition = self.pageYOffset;
+ settings = JSON.parse(localStorage[key]);
settings["pager"][url] = currentPosition;
localStorage[key] = JSON.stringify(settings);
};
- const backTrack = function(back, up, event) {
+ const reverseTrack = function(back, up, event) {
if (document.body.contains(up) && up.contains(event.target)) {
event.preventDefault();
window.scrollTo(0, 0);
@@ -52,7 +52,7 @@
self.addEventListener("click", function(event) {
const up = document.getElementById("top");
const back = document.getElementById("back");
- backTrack(back, up, event);
+ reverseTrack(back, up, event);
});
});
self.addEventListener("hashchange", function() {
@@ -63,7 +63,7 @@
"touchstart",
"scroll"
].forEach(function(event) {
- self.addEventListener(event, function(event) {
+ self.addEventListener(event, function() {
scrollTrack(url);
});
});
@@ -400,7 +400,7 @@
"keyup",
"click"
].forEach(function(event) {
- form.addEventListener(event, function(event) {
+ form.addEventListener(event, function() {
if (document.activeElement.nodeName === "A") {
return selected = document.activeElement;
}
diff --git a/static/js/pager.ts b/static/js/pager.ts
index cb7f8a4..3f9beaf 100644
--- a/static/js/pager.ts
+++ b/static/js/pager.ts
@@ -12,23 +12,24 @@
const key = "settings";
const url = self.location.href.split("#")[0].split("?")[0];
+ if (!localStorage[key]) localStorage[key] = JSON.stringify(settings);
+
const scrollRestore = function (url) {
if (history.scrollRestoration) history.scrollRestoration = "manual";
- if (localStorage[key]) settings = JSON.parse(localStorage[key]);
- const fragment = document.getElementById(location.hash.slice(1));
+ settings = JSON.parse(localStorage[key]);
+ const fragment = self.location.hash.slice(1) &&
+ document.getElementById(self.location.hash.slice(1));
const fragmentInURL = self.location.hash.length > 0;
if (fragmentInURL && document.body.contains(fragment)) {
settings["pager"][url] = self.pageYOffset;
localStorage[key] = JSON.stringify(settings);
fragment.scrollIntoView();
- self.addEventListener("DOMContentLoaded", function () {
+ return self.addEventListener("DOMContentLoaded", function () {
fragment.scrollIntoView();
});
- return;
}
if (settings["pager"][url] > 0) {
- self.scrollTo(0, settings["pager"][url]);
- return;
+ return self.scrollTo(0, settings["pager"][url]);
}
settings["pager"][url] = self.pageYOffset;
localStorage[key] = JSON.stringify(settings);
@@ -36,11 +37,12 @@
const scrollTrack = function (url) {
const currentPosition = self.pageYOffset;
+ settings = JSON.parse(localStorage[key]);
settings["pager"][url] = currentPosition;
localStorage[key] = JSON.stringify(settings);
};
- const backTrack = function (back, up, event) {
+ const reverseTrack = function (back, up, event) {
if (document.body.contains(up) && up.contains(event.target)) {
event.preventDefault();
window.scrollTo(0, 0);
@@ -57,7 +59,7 @@
self.addEventListener("click", function (event) {
const up = document.getElementById("top");
const back = document.getElementById("back");
- backTrack(back, up, event);
+ reverseTrack(back, up, event);
});
});
@@ -66,7 +68,7 @@
});
["click", "touchstart", "scroll"].forEach(function (event) {
- self.addEventListener(event, function (event) {
+ self.addEventListener(event, function () {
scrollTrack(url);
});
});