FIX: Add listeners to update post-archive more reliably
This commit is contained in:
parent
58fa014341
commit
d5450a3c0a
@ -245,3 +245,54 @@ window.addEventListener('popstate', () => {
|
||||
// Update the active post indicator after initializing the archive state
|
||||
setTimeout(updateActivePost, 10); // Small delay to ensure DOM is updated
|
||||
});
|
||||
|
||||
// Listen for URL changes (including navigation via other components)
|
||||
function setupUrlChangeListener() {
|
||||
// Store the current URL to detect changes
|
||||
let currentUrl = window.location.pathname;
|
||||
|
||||
// Use MutationObserver to detect DOM changes in the main element
|
||||
// This helps catch navigation changes from other components
|
||||
const observer = new MutationObserver((mutations) => {
|
||||
// Check if URL has changed
|
||||
if (window.location.pathname !== currentUrl) {
|
||||
currentUrl = window.location.pathname;
|
||||
|
||||
// Wait a bit for any DOM updates to complete
|
||||
setTimeout(() => {
|
||||
updateActivePost();
|
||||
initializeArchiveState();
|
||||
}, 50);
|
||||
}
|
||||
});
|
||||
|
||||
// Start observing the main element for changes
|
||||
const mainElement = document.querySelector('main');
|
||||
if (mainElement) {
|
||||
observer.observe(mainElement, { childList: true, subtree: true });
|
||||
}
|
||||
|
||||
// Also observe direct URL changes (e.g., when using browser back/forward)
|
||||
const intervalId = setInterval(() => {
|
||||
if (window.location.pathname !== currentUrl) {
|
||||
currentUrl = window.location.pathname;
|
||||
updateActivePost();
|
||||
initializeArchiveState();
|
||||
}
|
||||
}, 500); // Check every 500ms
|
||||
|
||||
// Clean up on page unload
|
||||
window.addEventListener('beforeunload', () => {
|
||||
clearInterval(intervalId);
|
||||
observer.disconnect();
|
||||
});
|
||||
}
|
||||
|
||||
// Initialize the URL change listener
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
setupUrlChangeListener();
|
||||
});
|
||||
} else {
|
||||
setupUrlChangeListener();
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user