You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
1.2 KiB
JavaScript

// Assign unique IDs to the footnote references based on their hashes.
function assignReferenceIds() {
const references = document.querySelectorAll('.footnote-reference');
for (const ref of references) {
ref.id = `ref:${ref.children[0].hash.substring(1)}`;
}
}
// Create backlinks for each footnote definition if a corresponding reference exists.
function createFootnoteBacklinks() {
const footnotes = document.querySelectorAll('.footnote-definition');
for (const footnote of footnotes) {
const backlinkId = `ref:${footnote.id}`;
// Skip if there's no corresponding reference in the text (i.e. the footnote doesn't reference anything).
if (!document.getElementById(backlinkId)) continue;
const backlink = document.createElement('a');
backlink.href = `#${backlinkId}`;
backlink.className = 'footnote-backlink';
backlink.textContent = '↩';
footnote.lastElementChild.appendChild(backlink);
}
}
// Initialise the handlers for the footnote references and definitions.
function initFootnotes() {
assignReferenceIds();
createFootnoteBacklinks();
}
// Wait for the window to load, then execute the main function.
window.addEventListener('load', initFootnotes);