Zapnutý a vypnutý JavaScript
Jak na webové stránce detekovat zapnuté nebo vypnuté skriptování.
Při psaní webové aplikace, kde se používá JavaScript, může být vhodné jeho přítomnost detekovat a tu informaci umět přenášet na server (např. do PHP skriptu).
HTML a CSS
Značka <noscript>
V HTML existuje značka <noscript>
, jejíž obsah se zobrazí při vypnutém skriptování.
<noscript>
<p>Zapněte si JavaSript!
</noscript>
Pokud se do této značky umístí třeba tag <body>
(nebo nějaký jiný obal celé stránky) a bude mít třídu .no-js
, otevírá se možnost všechny styly, co se mají projevit při vypnutém JS, začínat právě „.no-js
“.
Značka <body>
má volitelnou počáteční i uzavírací značku, takže se není třeba trápit s tím, že by se sama neotevřela.
JavaScript
Obrácený postup je naopak JavaScriptem přidat obalovému elementu třídu „.js
“; popřípadě element do HTML zapsat s „.no-js
“ a tu mu skriptem odebrat.
<body class="no-js">
<script>document.body.className = ''</script>
U tagu <body>
je výhodné, že má volitelnou počáteční i koncovou značku, není třeba tedy řešit nějaké otevírání/uzavření, oboje umí udělat sám. Na začátku stránky tak lze použít i:
<script>document.write("<body class=js>")</script>
Konstrukce document.write
je způsob, jak vypisovat obsah stránky, který má být přístupný jen s JS.
Použití v CSS
Využití třídy .js
nebo naopak .no-js
je prosté:
.js .schovat-pri-js {display: none}
Nebo…
.zobrazit-bez-js {display: none}
.no-js .zobrazit-bez-js {display: block}
Na straně serveru
Serverový skript se nemá jak spolehlivě dozvědět o (ne)zapnutém JS. Dát mu tuto informaci možné je, ale musí se použít oklika z řešeních výše. Například:
- Ihned JavaScriptem/
<noscript>
em přesměrovat stránku na URL s?js=ano
.<noscript> <meta http-equiv="refresh" content="1;URL=?js=ne"> </noscript>
Nebo v JS:
<script>window.location = "?js=ano"</script>
Po zjištění je nutné přesměrování odstranit, jinak vznikne nekonečná smyčka.
- Uložit pomocí JS cookie a při následném načtení nějaká stránky kontrolovat její existenci.
- Pingnout serverový skript JavaScriptem/
<noscript>
em.
Zjištění zapnutého JavaScriptu v PHP potom bude fungovat na základě kontroly $_GET["js"]
, popř. $_COOKIE["js"]
.
Komentáře