summaryrefslogtreecommitdiff
path: root/sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2025-09-13 15:01:06 -0600
committerAlejandro Soto <alejandro@34project.org>2025-09-13 15:01:06 -0600
commitf4fcda54638685899c730b3fa90a87d80d6dbef5 (patch)
tree0737e627cce304c3a9c4e757bc5f6571a7456091 /sysret.org/themes/tabi-lean/static/js/footnoteBacklinks.js
parentd8b9cf1f61cc07d625f1c37ccc28adfd58918416 (diff)
parent2c13119932765c6d788f08fb53abc244407c0d80 (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.js33
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);