Compare commits

..

1 Commits

Author SHA1 Message Date
XUE
f034773336 Merge 081ad8b84f into 86a1f3fd96 2024-11-14 17:08:39 +00:00

View File

@ -1,30 +1,7 @@
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {
initializeSidebar(); restoreSidebarPosition();
});
function initializeSidebar() {
const sidebarScrollbar = document.querySelector("aside.sidebar-container > .hextra-scrollbar");
if (!sidebarScrollbar) return;
enableCollapsibles(); enableCollapsibles();
restoreSidebarPosition(sidebarScrollbar); });
const debouncedSave = debounce((position) => {
saveSidebarPosition(position);
}, 150);
sidebarScrollbar.addEventListener('scroll', function() {
debouncedSave(this.scrollTop);
});
document.querySelectorAll('a').forEach(link => {
if (link.hostname === window.location.hostname) {
link.addEventListener('click', function(e) {
saveSidebarPosition(sidebarScrollbar.scrollTop);
});
}
});
}
function debounce(func, wait) { function debounce(func, wait) {
let timeout; let timeout;
@ -52,15 +29,30 @@ function enableCollapsibles() {
} }
function saveSidebarPosition(scrollPosition) { function saveSidebarPosition(scrollPosition) {
localStorage.setItem('sidebarScrollPosition', scrollPosition); const currentPosition = sessionStorage.getItem('sidebarScrollPosition');
if (currentPosition === null || parseInt(currentPosition) !== scrollPosition) {
sessionStorage.setItem('sidebarScrollPosition', scrollPosition);
}
} }
function restoreSidebarPosition(sidebarScrollbar) { function restoreSidebarPosition() {
const savedPosition = localStorage.getItem('sidebarScrollPosition'); const sidebarScrollbar = document.querySelector("aside.sidebar-container > .hextra-scrollbar");
if (sidebarScrollbar) {
if (savedPosition !== null) { const savedPosition = sessionStorage.getItem('sidebarScrollPosition');
requestAnimationFrame(() => {
sidebarScrollbar.scrollTop = parseInt(savedPosition); if (savedPosition !== null) {
sidebarScrollbar.scrollTo({
top: parseInt(savedPosition),
behavior: 'instant'
});
}
const debouncedSave = debounce((position) => {
saveSidebarPosition(position);
}, 150);
sidebarScrollbar.addEventListener('scroll', function() {
debouncedSave(this.scrollTop);
}); });
} }
} }