diff options
| author | Alejandro Soto <alejandro@34project.org> | 2025-09-13 15:01:06 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2025-09-13 15:01:06 -0600 |
| commit | f4fcda54638685899c730b3fa90a87d80d6dbef5 (patch) | |
| tree | 0737e627cce304c3a9c4e757bc5f6571a7456091 /sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js | |
| parent | d8b9cf1f61cc07d625f1c37ccc28adfd58918416 (diff) | |
| parent | 2c13119932765c6d788f08fb53abc244407c0d80 (diff) | |
Merge commit '6a7d3111b31e73fc66af5360149d41f690fbcaa4'
Diffstat (limited to 'sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js')
| -rw-r--r-- | sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js b/sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js new file mode 100644 index 0000000..8c20098 --- /dev/null +++ b/sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js @@ -0,0 +1,33 @@ +// 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); |
