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 () {
initializeSidebar();
});
function initializeSidebar() {
const sidebarScrollbar = document.querySelector("aside.sidebar-container > .hextra-scrollbar");
if (!sidebarScrollbar) return;
restoreSidebarPosition();
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) {
let timeout;
@ -52,15 +29,30 @@ function enableCollapsibles() {
}
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) {
const savedPosition = localStorage.getItem('sidebarScrollPosition');
function restoreSidebarPosition() {
const sidebarScrollbar = document.querySelector("aside.sidebar-container > .hextra-scrollbar");
if (sidebarScrollbar) {
const savedPosition = sessionStorage.getItem('sidebarScrollPosition');
if (savedPosition !== null) {
requestAnimationFrame(() => {
sidebarScrollbar.scrollTop = parseInt(savedPosition);
sidebarScrollbar.scrollTo({
top: parseInt(savedPosition),
behavior: 'instant'
});
}
const debouncedSave = debounce((position) => {
saveSidebarPosition(position);
}, 150);
sidebarScrollbar.addEventListener('scroll', function() {
debouncedSave(this.scrollTop);
});
}
}