diff --git a/js/scrollSpy.js b/js/scrollSpy.js index 9d39a7c087..0632e6c330 100644 --- a/js/scrollSpy.js +++ b/js/scrollSpy.js @@ -38,10 +38,19 @@ * So the first one with positive bounding rect top will be the nearest next header */ if (currNavActive && i < headings.length - 1) { - const next = headings[i + 1].href.split('#')[1]; + const heading = headings[i + 1]; + const next = decodeURIComponent(heading.href.split('#')[1]); const nextHeader = document.getElementById(next); - const top = nextHeader.getBoundingClientRect().top; - currNavActive = top > OFFSET; + + if (nextHeader) { + const top = nextHeader.getBoundingClientRect().top; + currNavActive = top > OFFSET; + } else { + console.error('Can not find header element', { + id: next, + heading, + }); + } } /** * Stop searching once a first such header is found, @@ -56,6 +65,7 @@ } }, 100); }; + document.addEventListener('scroll', onScroll); document.addEventListener('resize', onScroll); document.addEventListener('DOMContentLoaded', function() {