function throttle(func, delay) {
let lastCall = 0;
return function (...args) {
const now = new Date().getTime();
if (now - lastCall >= delay) {
lastCall = now;
func.apply(this, args);
}
};
}
const pageKey = window.location.href;
window.addEventListener(
"scroll",
throttle(() => {
const scrollPosition = window.scrollY;
localStorage.setItem(pageKey, scrollPosition);
localStorage.setItem(`${pageKey}_timestamp`, Date.now());
}, 300)
);
window.addEventListener("load", () => {
const savedScrollPosition = localStorage.getItem(pageKey);
if (savedScrollPosition !== null) {
window.scrollTo({
top: parseInt(savedScrollPosition),
behavior: "smooth",
});
}
cleanOldScrollPositions();
});
function cleanOldScrollPositions() {
const sevenDaysAgo = Date.now() - 7 * 24 * 60 * 60 * 1000;
for (let key of Object.keys(localStorage)) {
if (key.endsWith("_timestamp")) {
const timestamp = localStorage.getItem(key);
if (parseInt(timestamp) < sevenDaysAgo) {
const baseKey = key.replace("_timestamp", "");
localStorage.removeItem(baseKey);
localStorage.removeItem(key);
}
}
}
}