PageSourceSearch

https://www.syntetisktale.dk/script.js

js syntetisktale.dk collected 2026-10-05 11:36:11 UTC 1,816 bytes, 55 lines download raw bytes

1document.addEventListener('DOMContentLoaded', () => {
2  // Mobile Burger Menu Toggle
3  const burgerBtn = document.getElementById('burgerBtn');
4  const primaryNav = document.getElementById('primaryNav');
5
6  if (burgerBtn && primaryNav) {
7    const toggleMenu = (open) => {
8      const isExpanded = open !== undefined ? open : burgerBtn.getAttribute('aria-expanded') === 'false';
9      burgerBtn.setAttribute('aria-expanded', isExpanded);
10      burgerBtn.classList.toggle('is-active', isExpanded);
11      primaryNav.classList.toggle('is-active', isExpanded);
12      document.body.style.overflow = isExpanded ? 'hidden' : '';
13    };
14
15    burgerBtn.addEventListener('click', () => toggleMenu());
16
17    primaryNav.querySelectorAll('.nav-link').forEach(link => {
18      link.addEventListener('click', () => toggleMenu(false));
19    });
20
21    document.addEventListener('click', (event) => {
22      if (!primaryNav.contains(event.target) && !burgerBtn.contains(event.target) && primaryNav.classList.contains('is-active')) {
23        toggleMenu(false);
24      }
25    });
26
27    document.addEventListener('keydown', (event) => {
28      if (event.key === 'Escape' && primaryNav.classList.contains('is-active')) {
29        toggleMenu(false);
30      }
31    });
32  }
33
34  // Back to Top Button
35  const backToTopBtn = document.getElementById('backToTop');
36
37  if (backToTopBtn) {
38    const handleScroll = () => {
39      if (window.scrollY > 300) {
40        backToTopBtn.classList.add('is-visible');
41      } else {
42        backToTopBtn.classList.remove('is-visible');
43      }
44    };
45
46    window.addEventListener('scroll', handleScroll, { passive: true });
47
48    backToTopBtn.addEventListener('click', () => {
49      window.scrollTo({
50        top: 0,
51        behavior: 'smooth'
52      });
53    });
54  }
55});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.