From ba93460af1ee7bd4fbb3489e9fb0fbb67e1df2da Mon Sep 17 00:00:00 2001 From: Amit Rana Date: Wed, 15 Apr 2026 13:46:17 +0530 Subject: [PATCH] =?UTF-8?q?fix:=20mobile=20hamburger=20not=20working=20?= =?UTF-8?q?=E2=80=94=20wire=20event=20listeners=20after=20DOM=20injection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- shared-header.js | 68 +++++++++++++++++++++++------------------------- 1 file changed, 32 insertions(+), 36 deletions(-) diff --git a/shared-header.js b/shared-header.js index aeb1205..fb3c974 100644 --- a/shared-header.js +++ b/shared-header.js @@ -225,47 +225,43 @@ ''; // ─── Inject header at top of body ─────────────────────────────── - // Guard: if script runs before exists (e.g. loaded from ), - // wait for DOM ready instead of crashing - function inject() { - if (document.body) { - document.body.insertAdjacentHTML('afterbegin', headerHTML); + // ─── Inject + wire up hamburger ───────────────────────────────── + function injectAndInit() { + if (!document.body) return; + document.body.insertAdjacentHTML('afterbegin', headerHTML); + + var burger = document.getElementById('sh-burger'); + var nav = document.getElementById('sh-nav'); + if (!burger || !nav) return; + + function closeMenu() { + nav.classList.remove('sh-open'); + burger.setAttribute('aria-expanded', 'false'); } + + burger.addEventListener('click', function () { + var open = nav.classList.toggle('sh-open'); + burger.setAttribute('aria-expanded', String(open)); + }); + + document.addEventListener('click', function (e) { + if (!document.getElementById('sh-header').contains(e.target)) closeMenu(); + }); + + document.addEventListener('keydown', function (e) { + if (e.key === 'Escape') closeMenu(); + }); + + nav.querySelectorAll('a').forEach(function (a) { + a.addEventListener('click', closeMenu); + }); } + if (document.readyState === 'loading') { - document.addEventListener('DOMContentLoaded', inject); + document.addEventListener('DOMContentLoaded', injectAndInit); } else { - inject(); + injectAndInit(); } - // ─── Hamburger logic ───────────────────────────────────────────── - var burger = document.getElementById('sh-burger'); - var nav = document.getElementById('sh-nav'); - - // Guard: bail out cleanly if injection failed for any reason - if (!burger || !nav) return; - - function closeMenu() { - nav.classList.remove('sh-open'); - burger.setAttribute('aria-expanded', 'false'); // always string - } - - burger.addEventListener('click', function () { - var open = nav.classList.toggle('sh-open'); - burger.setAttribute('aria-expanded', String(open)); // string 'true'/'false' - }); - - document.addEventListener('click', function (e) { - if (!document.getElementById('sh-header').contains(e.target)) closeMenu(); - }); - - document.addEventListener('keydown', function (e) { - if (e.key === 'Escape') closeMenu(); - }); - - nav.querySelectorAll('a').forEach(function (a) { - a.addEventListener('click', closeMenu); - }); - })();