|
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 Alternativeanzubieten. Es geht hier nicht um das Was, sondern das Wie.
Alternatives Angebot einer reinen HTML-Seite Wenn der Zielbrowser kein JavaScript will, scheidet JavaScriptfür die Unterscheidung aus, sollte man meinen. Stimmtaber nicht. Da HTML-Seiten gefahrlos beliebig viel JavaScript-Codeenthalten können, der im gegebenen Fall überlesenwird, muß man lediglich das Laden der JavaScript-Seitenselbst 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 lauteetwa 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"); |
|
|
|