Detekce zapnutého JavaScriptu

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>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:

  1. 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.

  2. Uložit pomocí JS cookie a při následném načtení nějaká stránky kontrolovat její existenci.
  3. 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"].

To je všechno. Líbil se vám článek a chcete se dozvědět, až vyjde další?

Sledujte:

 

Připomínky mi pište do komentářů ↓

Jak vytvořit WYSIWYG editor

Vlastní jednoduchý WYSIWYG editor

Chceme-li na webu zadávat text a běžná <textarea> už nestačí, řešením je napsat si vlastní WYSIWYG editor.

CSS vyhledávání a filtrování

CSS vyhledávání a filtrování obsahu

Jak pomocí CSS se špetkou JS filtrovat obsah stránky nebo na ní vyhledávat.

Plynulý přesun focusu

Plynulý přesun focusu

Plynulé přesouvání focusu mezi jednotlivými položkami formuláře.

Označení textu kliknutím

Označení kódu nebo textu po kliknutí

Jak označit text nebo zdrojový kód jedním kliknutím. Je to vůbec rozumné?

AJAX

AJAX

Asynchronní načítání částí stránek a odesílání formulářů bez obnovení celé stránky.

Komentáře