Skip to content

Commit cd0f30d

Browse files
committed
Only build toc data after document has loaded
Closes gh-20
1 parent 7bd70ff commit cd0f30d

File tree

1 file changed

+26
-19
lines changed

1 file changed

+26
-19
lines changed

src/main/js/site/toc.js

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -22,25 +22,38 @@
2222

2323
const debugMode = false;
2424

25-
const tocElement = document.querySelector("#toc");
26-
const toggleTocElement = document.querySelector("#toggle-toc");
27-
const contentElement = document.querySelector("#content");
25+
let tocElement;
26+
let toggleTocElement;
27+
let contentElement;
2828

29-
if (!tocElement || !contentElement) {
30-
return;
31-
}
32-
33-
const headingElements = findHeadingElements();
34-
const hrefToTocAnchorElement = buildHrefToTocAnchorElement();
35-
const headingElementToTocElement = buildHeadingElementToTocElement();
29+
let headingElements;
30+
let hrefToTocAnchorElement;
31+
let headingElementToTocElement;
3632

3733
let lastActiveTocElement = null;
3834
let disableOnScroll = false;
3935

40-
tocElement.addEventListener("click", onTocElementClick);
41-
toggleTocElement.addEventListener("click", onToggleTocClick);
4236
window.addEventListener("load", onLoad);
4337

38+
function onLoad() {
39+
tocElement = document.querySelector("#toc");
40+
toggleTocElement = document.querySelector("#toggle-toc");
41+
contentElement = document.querySelector("#content");
42+
if (!tocElement || !contentElement) {
43+
return;
44+
}
45+
headingElements = findHeadingElements();
46+
hrefToTocAnchorElement = buildHrefToTocAnchorElement();
47+
headingElementToTocElement = buildHeadingElementToTocElement();
48+
onLocationHashChange();
49+
window.addEventListener("hashchange", onLocationHashChange);
50+
window.addEventListener("scroll", onScroll);
51+
window.addEventListener("scroll", onEndScroll);
52+
window.addEventListener("resize", onResize);
53+
tocElement.addEventListener("click", onTocElementClick);
54+
toggleTocElement.addEventListener("click", onToggleTocClick);
55+
}
56+
4457
function findHeadingElements() {
4558
const maxHeadingLevel = getMaxHeadingLevel();
4659
const headingSelectors = [];
@@ -101,13 +114,7 @@
101114
return result;
102115
}
103116

104-
function onLoad() {
105-
onLocationHashChange();
106-
window.addEventListener("hashchange", onLocationHashChange);
107-
window.addEventListener("scroll", onScroll);
108-
window.addEventListener("scroll", onEndScroll);
109-
window.addEventListener("resize", onResize);
110-
}
117+
111118

112119
function onLocationHashChange() {
113120
updateFixedPositionClass();

0 commit comments

Comments
 (0)