18 lines
645 B
JavaScript
18 lines
645 B
JavaScript
|
window.addEventListener('DOMContentLoaded', () => {
|
||
|
const observer = new IntersectionObserver(entries => {
|
||
|
entries.forEach(entry => {
|
||
|
const id = entry.target.getAttribute('id');
|
||
|
if (entry.intersectionRatio > 0) {
|
||
|
document.querySelector(`#TableOfContents ul li a[href="#${id}"]`).classList.add('active');
|
||
|
} else {
|
||
|
document.querySelector(`#TableOfContents ul li a[href="#${id}"]`).classList.remove('active');
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// Track all headers that have an `id` applied
|
||
|
document.querySelectorAll('article h3[id], article h2[id]').forEach((section) => {
|
||
|
observer.observe(section);
|
||
|
});
|
||
|
});
|