/* data-href-nav.js * Enables JS-only navigation for elements with [data-href]. * - Uses rel="nofollow" links rendered with href="javascript:void(0)" * - Supports Ctrl/Cmd-click to open in a new tab */ (function(){ if (window.__dataHrefNavEnabled) return; window.__dataHrefNavEnabled = true; function onClick(e){ var el = e.target && e.target.closest ? e.target.closest('[data-href]') : null; if(!el) return; var href = el.getAttribute('data-href'); if(!href) return; // Open in new tab if user holds Ctrl/Cmd var openNewTab = e.ctrlKey || e.metaKey; if (openNewTab) { window.open(href, '_blank'); e.preventDefault(); return; } // Default: same-tab navigation window.location.href = href; e.preventDefault(); } function onKeyDown(e){ var el = e.target; if (!el || !el.getAttribute) return; if (!el.hasAttribute('data-href')) return; var key = e.key || e.keyCode; var isEnter = key === 'Enter' || key === 13; var isSpace = key === ' ' || key === 'Spacebar' || key === 32; if (!isEnter && !isSpace) return; var href = el.getAttribute('data-href'); if (!href) return; // Prevent page scroll on Space e.preventDefault(); window.location.href = href; } // Capture phase to ensure it runs before most handlers document.addEventListener('click', onClick, true); document.addEventListener('keydown', onKeyDown, true); })();