Frank Bergermann: Muß eine Seite grundsätzlich ohne Javascript laufen?

Beitrag lesen

Hi,

leider wissen viele nicht, daß JavaScript die Webseite erweitern soll und nicht ersetzen. Natürlich können Dinge wie Berechnungen usw. nicht ohne JavaScript oder Server ablaufen. Aber für viele Dinge gibt es Techniken, die JavaScript und abgeschaltetes Scripting so kombinieren, so daß die Website auf beiden Varianten ideal läuft. Leider werden diese in den SelfHTML-Beispielen nicht angewendet, und so weiß leider kaum jemand davon.

1. <noscript>...</noscript>-Tag
In diesen Tag kommt rein, was bei ausgeschaltetem Scripting erscheinen soll. Von einfachen Aussagen, wie "Bitte Scripting einschalten" oder "Diese Seite läuft nur mit aktiviertem Scripting" bis hin zu Links zu einer Seitenübersicht, wenn das Menü der Website nur mit JavaScript funktioniert.

Gute Menüscripts machen soetwas einfach, z. B. bei http://www.js-menue.de braucht man nur alle Ordner aufzuklappen (dafür gibt es einen Link unter dem Menü), und schon hat man eine Sitemap. Deren Quelltext wird dann in eine Datei gespeichert und durch obigen Tag vom Script automatisch in das Frameset geladen, falls das Scripting deaktiviert ist. Somit sind auch ohne Menü alle Seiten erreichbar, und den Suchmaschinen wird so auch ein Weg gelegt.

Eine interessante Kombination findet sich auch bei heise.de bei den Auswahllisten-Feldern (aufklappbare Liste, wo man hinsurfen möchte): mit JavaScript reagieren sie sofort auf eine Auswahl, ohne JavaScript erscheint, wieder durch obigen HTML-Tag, ein "Go"-Button, der nach dem Anklicken das Formular an den Server überträgt, der dann die nächste Seite einblendet.

Oder man progammiert eine Zufallslink-Funktion. Die läuft natürlich nur mit eingeschaltetem Scripting. Aber man kann mittels des noscript-Tags die Links voransetzen, alle mit gleicher Bezeichnung, Beispiel:
<noscript>
  <a href="eins.htm">Link</a>
  <a href="zwei.htm">Link</a>
  <a href="drei.htm">Link</a>
</noscript>
<a href="javascript:zufallslink()">Zufallslink</a>
<noscript>
 (funktioniert nur mit eingeschaltetem Scripting)
</noscript>
Da alle Links die gleiche Bezeichnung "Link" haben, entsteht wieder eine Art zufälliger Auswahlmöglichkeit.

2. Fenster öffnen
Auf vielen Websites funktionieren Fenster ohne störende Leisten nur mit JavaScript. Sie werden meist per
<a href="javascript:agb()">AGB</a>
oder
<a href="#" onClick="agb()">AGB</a>
aufgerufen.
Schon die einfache Benutzung des Kontextmenüs "Link in neuem Fenster öffnen" versagt hier, erst recht natürlich abgeschaltetes Scripting.

Aber es geht auch anders:

<a href="agb.htm" target="_blank" onClick="agb();return false">AGB</a>

oder all-in-one

<a href="agb.htm" target="_blank" onClick="window.open('agb.htm','','resizable=true,scrollbars=true');return false">AGB</a>

Hier wird ein normaler Link, der mittels target="_blank" ein neues Standardfenster öffnet, mit einer JavaScript-Funktion verbunden. Dabei verhindert das "return false" das Ausführen des normalen Links bei eingeschaltetem Scripting. Stattdessen wird dafür das Fenster mit den gewünschten Optionen geöffnet. Bei ausgeschaltetem Scripting wird die Datei aber ganz normal mit dem normalen Link und target="_blank" in einem neuen Fenster geöffnet.

Einziger Nachteil: die verlinkte Seite muß sowohl in href als auch in der JavaScript-Funktion angegeben werden. Wenn man will, kann man dies auch noch ändern, indem man im Link "this" benutzt:

<a href="agb.htm" target="_blank" onClick="fenster(this);return false">AGB</a>

oder

<a href="agb.htm" target="_blank" onClick="window.open(this,'','resizable=true,scrollbars=true');return false">AGB</a>

Man könnte auch this.href benutzen, aber da Links wie das location-Objekt funktionieren, geht es wie beim location-Objekt auch ohne href.

3. Forumularprüfung
Sie funktioniert auch mit dem return-Wert, wie oben. Beispiel:

<form onsubmit="return confirm('Formular jetzt absenden?')">

Hier erfolgt bei eingeschaltetem Scripting eine Sicherheitsrückfrage. Bei ausgeschaltetem Scripting fällt die zwar weg, aber das Formular läßt sich dennoch abschicken.

Dies wird in ähnlicher Form z. B. bei http://www.directbox.com eingesetzt, um vor dem Löschen der angekreuzten E-Mails eine Sicherheitsrückfrage zu stellen. Dies geht schnell und ohne Warten auf den Server.

Fazit:
Es gibt genügend Techniken, JavaScript einzusetzen, ohne daß man sich dafür oder dagegen entscheiden muß. Immer so programmieren, daß es auch ohne JavaScript geht.

Viele Grüße

Frank Bergermann