Der Zielbrowser kann oder will kein JavaScript - könnte ja sein!


Die Zahl der Browser, die JavaScript nicht kennen, ist sicher nicht mehr sehr groß. Leider kann man die JavaScript-Fähigkeit moderner Browser aber abschalten. Abschalten ist zwar dumm, Dummheit aber nicht verboten. Und wäre sie verboten, würden sich sicher nur die Schlauen an das Verbot halten .. oder so ähnlich.
Es ist ratsam, wenn es denn um wesentliche Funktionen der Seite geht, einen Hinweis oder wo möglich eine Alternative anzubieten. Es geht hier nicht um das Was, sondern das Wie.

Alternatives Angebot einer reinen HTML-Seite

Wenn der Zielbrowser kein JavaScript will, scheidet JavaScript für die Unterscheidung aus, sollte man meinen. Stimmt aber nicht. Da HTML-Seiten gefahrlos beliebig viel JavaScript-Code enthalten können, der im gegebenen Fall überlesen wird, muß man lediglich das Laden der JavaScript-Seiten selbst durch JavasCript-Funktionalität bewirken.
Klingt mal wieder schlimmer, als es ist.
Man nennt seine "richtige" Seite etwa "javascript_seite.html", die Ersatz-Seite für den Eventualfall möge etwa "html_seite.html" heißen. Deren Code laute etwa wie folgt:

<HTML>
   <HEAD>
      <TITLE>
         HTML-Ersatzseite
      </TITLE>
<SCRIPT language="JavaScript" type="text/javascript">
<!--
   document.location="javascript_seite.html";
//-->
</SCRIPT>
   </HEAD>
   <BODY>
      Der Seiteninhalt der HTML-Seite
   </BODY>
</HTML>

Funktioniert. Es wird diese Ersatz-Seite zunächst geladen und auch kurzzeitig angezeigt, danach erfolgt, wenn denn der Browser JavaScript kann, das Neuladen der richtigen Seite. Kann er es nicht, wird der Script-Teil sauber überlesen.
Es gibt allerdings einen kleinen, leicht zu übersehenden Fehler. Wer diese Seiten nutzt, kommt von der Javascript-Seite mit dem Zurück-Button seines Browsers nicht mehr weg. Jeder Zurück-Befehl landet auf der gezeigten Hilfsseite, welche sogleich die JavaScript-Seite erneut lädt.
Wem nun das history-Objekt einfällt, der hat eine Niete gezogen. Zwar kann man damit in der Liste der zuvor gezeigten Seiten zurückblättern, insbesondere auch das Überspringen einer oder mehrerer Seiten bewirken ABER es funktioniert nicht in allen Browsern. Netscape 4.x stellt sich hier besonders zickig an.
Sicherer ist die Verwendung des location-Objektes. Dieses Unterobjekt von window bietet nämlich als hier brauchbare Methoden reload() und replace() an. Die Besonderheit der replace-Methode ist es, daß eine geladene Seite ersetzt wird, nicht nur im Anzeigefenster, sondern auch in der history-Liste. So, als wäre sie nie besucht worden.
Hier die Nutzanwendung und endgültige Lösung. Im obigen Seitencode ist nur die Ladeanweisung zu ändern in:

location.replace("javascript_seite.html");