/* * Kiosk-Modus für Ausstellungs-/Terminal-Betrieb. * * Aktivieren: beliebige URL mit ?kiosk=true (oder ?kiosk=1) aufrufen. * Deaktivieren: ?kiosk=false (oder ?kiosk=0). * * Ist der Modus aktiv, bleibt er für die gesamte Browser-Session erhalten * (auch beim Weiterklicken im Menü, ohne den Parameter erneut anzuhängen). * Externe Links (anderer Host) sowie mailto:/tel: werden dann unklickbar * gemacht – der Linktext bleibt lesbar. Interne Navigation bleibt möglich, * damit Karte und Schauplätze weiter erkundet werden können. */ (function () { "use strict"; var KEY = "op-kiosk"; var params = new URLSearchParams(window.location.search); // Parameter setzt/löscht den Session-Zustand if (params.has("kiosk")) { var v = params.get("kiosk").toLowerCase(); var on = v === "" || v === "true" || v === "1" || v === "yes"; try { if (on) { sessionStorage.setItem(KEY, "1"); } else { sessionStorage.removeItem(KEY); } } catch (e) { /* Storage evtl. gesperrt – dann nur für diese Seite aktiv */ } if (!on) { document.documentElement.classList.remove("op-kiosk"); return; } } var active = false; try { active = sessionStorage.getItem(KEY) === "1"; } catch (e) { /* ignore */ } if (!active && !params.has("kiosk")) { return; } if (!active && params.has("kiosk")) { // Storage gesperrt, aber Parameter aktiv → nur für diese Seite active = params.get("kiosk").toLowerCase() !== "false"; } if (!active) { return; } document.documentElement.classList.add("op-kiosk"); function neutralize() { var host = window.location.hostname; var links = document.querySelectorAll("a[href]"); for (var i = 0; i < links.length; i++) { var a = links[i]; var url; try { url = new URL(a.href, window.location.href); } catch (e) { continue; } var web = url.protocol === "http:" || url.protocol === "https:"; var block = (web && url.hostname !== host) || url.protocol === "mailto:" || url.protocol === "tel:"; if (!block) { continue; } a.classList.add("op-link-disabled"); a.setAttribute("aria-disabled", "true"); a.setAttribute("tabindex", "-1"); a.removeAttribute("target"); a.dataset.kioskHref = a.getAttribute("href"); a.removeAttribute("href"); } } if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", neutralize); } else { neutralize(); } })();