Einführung

Die Verwendung von JavaScript eröffnet viele Möglichkeiten das Browsen auf einer Webseite angenehmer zu gestalten. Wenn aber JavaScript deaktiviert wird, dann sollte das nicht dazu führen, dass die Funktion der Webseite eingeschränkt wird. Deswegen sollte ein guter Webentwickler immer fallback-Techniken berücksichtigen. Folgendes Tutorial beschreibt, wie man dies erreichen kann. Dabei werden grundlegende Kenntnisse in HTML, CSS und JavaScript vorausgesetzt. Außerdem sollte das JavaScript-Framework jQuery nicht komplett unbekannt sein.

Tutorial

Form-Elemente zu stylen ist schwierig und sie in jedem Browser identisch aussehen zu lassen ist oft ein unangenehmes Unterfangen. Das ist Grund genug, um zum Beispiel einen Submit-Button durch ein Anchor-Tag (oder irgend ein anderes HTML Element) zu ersetzen. Das soll uns als Beispiel in diesem Tutorial dienen:

  1. <a href="#"
  2. onclick="document.thisFrom.submit();
  3. return(false);">
  4. Send Message!
  5. </a>

An das Anchor-Tag wird ein onclick-Event gebunden, um das Abschicken des Formulars auszulösen. Letzteres benötigt JavaScript. Wenn JavaScript allerdings deaktiviert ist, gibt es keine Möglichkeit das Formular abzuschicken. Um die Funktionalität weiter zu gewährleisten, kann man einen Standard-Submit-Button hinzufügen:

  1. <input name="submit" type="submit"
  2. value="Send Message!" />
  3. </noscript>

Das oben stehende HTML-Snippet fügt einen Submit-Button in das Formular ein, wenn JavaScript deaktiviert ist. Allerdings wird immer noch das Anchor-Submit-Tag angezeigt, welches die identische Funktionalität zur Verfügung stellen soll. Dies funktioniert allerdings nicht. Die Lösung zu diesem Problem ist, das Anchor-Tag standardmäßig unsichtbar zu machen. Um das zu erreichen fügen wir eine CSS-Klasse (show-on-js) in das Anchor-Tag ein:

  1. <a href="#"
  2. class="js-submit show-on-js"
  3. onclick="document.thisFrom.submit(); return(false);">
  4. Send Message!
  5. </a>

Das erlaubt uns nun alles zu verstecken - nicht nur dieses Anchor-Tag - was nur funktioniert, wenn JavaScript aktiviert ist. Eine zweite CSS-Klasse (js-submit) ermöglicht es weitere Stile auf das Element anzuwenden, die unabhängig von der show/hide-Funktion sind:

  1. .show-on-js{
  2. display: none;
  3. }
  4.  
  5. .js-submit{
  6. /* make your anchor-tag look good here */
  7. }

Hier kommt der Trick

JavaScript selbst kann man nun verwenden, um Elemente sichtbar zu machen, die nur Sinn ergeben, wenn JavaScript aktiv ist:

  1. <script type="text/javascript">
  2. $(document).ready(function() {
  3. $(".show-on-js").show();
  4. $(".hide-on-js").hide();
  5. });
  6. </script>

Letzteres Snippet macht vom JavaScript Framework jQuery Gebrauch. Man sollte also sicherstellen, dass man das Framework einbindet. Alles was nur sichtbar sein soll, wenn JavaScript aktiv ist (show-on-js), wird sichtbar gemacht und alle Fallback-Elemente (hide-on-js) werden versteckt. Ein Fallback-Element, dass man nur anzeigen möchte, wenn JS deaktiviert ist, könnte zum Beispiel ein Hinweis sein, der den Benutzer freundlich bittet JavaScript zu aktiveren:

  1. <p class="js-message hide-on-js">
  2. Bitte aktivieren Sie JavaScript in Ihrem Browser!
  3. </p>

Anstatt die hide-on-js-Klasse zu verwenden könnte man hier auch das Paragraph-Tag in ein noscript-Tag einbetten. Welche Technik man verwendet ist wohl Geschmackssache. Hier noch ein bisschen CSS, um die Meldung dort zu platzieren, wo der Benutzer sie nicht ignorieren kann:

  1. .js-message{
  2. position: absolute;
  3. top: 5px;
  4. left: 5px;
  5. color: red;
  6. background: yellow;
  7. }

Das Ganze in TYPO3 verwenden

Wer TYPO3 als Content-Management-System verwendet, kann folgenden TypoScript-Quelltext einbinden, um die show/hide-Funktionalität zu ermöglichen:

  1. tmp.jsshow = TEXT
  2. tmp.jsshow.value (
  3.   <script type="text/javascript">
  4.    $(document).ready(function() {
  5. $(".show-on-js").show();
  6. $(".hide-on-js").hide();
  7. });
  8.   </script>
  9. )
  10.  
  11. page.headerData.99 < tmp.jsshow
Jetzt bookmarken:facebook.comdel.icio.usdigg.comgoogle.comlive.comMister WongTechnorati