Skip to content

Commit 9b08941

Browse files
committed
fix: bail out of deferInitNav after 10 frames on non-docs pages
1 parent 152d518 commit 9b08941

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

site/src/components/Nav.astro

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,23 @@ function initNav() {
100100
}
101101
};
102102
}
103-
// Defer init until sidebar DOM exists (Nav renders before DocsSidebar)
103+
// Defer init until sidebar DOM exists (Nav renders before DocsSidebar).
104+
// Bail after a few frames if sidebar never appears (non-docs pages).
105+
var _navRetries = 0;
106+
var _navMaxRetries = 10;
104107
function deferInitNav() {
105108
if (document.getElementById('docs-sidebar-mobile')) {
106109
initNav();
107-
} else {
108-
// Sidebar not yet in DOM — wait for it
110+
} else if (_navRetries < _navMaxRetries) {
111+
_navRetries++;
109112
requestAnimationFrame(deferInitNav);
110113
}
114+
// else: sidebar doesn't exist on this page — stop trying
111115
}
116+
_navRetries = 0;
112117
deferInitNav();
113118
document.addEventListener('astro:after-swap', function() {
114-
requestAnimationFrame(deferInitNav);
119+
_navRetries = 0;
120+
deferInitNav();
115121
});
116122
</script>

0 commit comments

Comments
 (0)