Automatisieren

Automatisierung klingt erstmal gut. Worum geht es?

Die Verwaltung vieler Web-Seiten kann ganz schön nerven; anders ausgedrückt: Irgendwann fängt es richtig an, Arbeit zu machen. Einige dieser Arbeiten sind unnötig, weil, die kann der Computer selbst erledigen. Dazu zählt das letzte Aktualisierungsdatum.

Das letzte Bearbeitungsdatum anzeigen

Das letzte Bearbeitungsdatum kann JavaScript selber bestimmen. Es kennt nämlich eine Eigenschaft des Objektes document, die lastModified heißt und das Speicherdatum der Seite ausgeben kann.

Allerdings: Ohne Pferdefuß geht es nicht. (Achtung, dies Pferd wird dreibeinig!)

1. Nicht alle Server liefern das Speicherdatum richtig zurück. Da hilft Ausprobieren, gegebenfalls Resignieren.

2. Ruft man direkt diese Eigenschaft auf, wozu das folgende genügt:

<script language="JavaScript">
   document.write("Letzte Änderung: " + document.lastModified);
</script>

dann wird, wie es sich bei Windows gehört, das Datum im amerikanischen Format samt kompletter Uhrzeit ausgegeben:

Da ich kein Ami bin, will ich das nicht. Wenn Sie dagegen Netscape unter dem internationalen LINUX benutzen, steht hier ein eingedeutschter Eintrag. IExplorer erlaubt sich, ohne textliche Ergänzung auszukommen, Opera mit Gecko-Maschine zeigt anderes als Netscape6 mit Gecko-Maschine …

Jetzt kommt Arbeit auf uns zu, es sei denn, man fügt sich der Herrschaft der Browser.

Die Eigenschaft lastModified kommt ohne Instanz des Datum-Objektes aus. Die Folge ist, die schönen Datumsfunktionen, die mir das Problem lösen könnten, stehen nicht zur Verfügung und schlimmer, selbst wenn ich eine Instanz des Datum-Objektes anlegte, hülfe (schön, nicht?) es nichts. Denn document.lastModified liefert einfach nur einen String. Aber der läßt sich natürlich als solcher umformen.

Nehmen wir den zuerst den Fall des IExplorers. Der Datumsstring hat eine feste Länge mit festen Positionen, das erlaubt eine einfache Lösung. Das Ergebnis in voller Schönheit:

<script language="JavaScript">
   var wort=document.lastModified;
   document.write("Letzte Änderung: " + wort.substring(3,5)+"."+wort.substring(0,2)+"."+wort.substring(6,10));
</script>

Alles klar?

3. Wenn nun hier oben Unsinn steht, kommen wir zum dritten Pferdefuß (zweibeinige Pferde fallen unweigerlich um!). Der besteht nämlich darin, daß der liebe Netscape Navigator (jedenfalls in meiner modernen Version) das letzte Aktualisierungsdatum anhübscht und mit Wochentag und Monatsnamen meldet. Selbstverständlich in der amerikanischen Form. Da wir aber ein deutsches Datum wollen, nicht aus nationalistischen Gründen, sondern nur so, ist noch mehr Arbeit angesagt.

Wie die Beobachtung der Browser-Scene zeigt, kommen hier mehrere Möglichkeiten in Betracht: Volle oder abgekürzte Wochentagsnamen in deutscher oder in englischer Form, volle oder abgekürzte Monatsnamen in beiden Sprachen…

Unterscheiden wir also drei Fälle, Angabe mit fester Länge von 19 Zeichen (IExplorer), eingedeutschtes Datum (wie bei Linux), mindestens die Monatskürzel sind enthalten (Netscape und Freunde).

<script language="JavaScript">
   var wort=document.lastModified;
   var datwort=" Letzte Änderung: ";
   if(navigator.platform.chatAt(0)=="L")
   datwort=datwort+wort.substring(3,6)+"."+wort.substring(7,10)+"."+wort.substring(11,15);
   else
   if (wort.length==19)
      datwort=datwort+wort.substring(3,5)+"."+wort.substring(0,2)+"."+wort.substring(6,10);
   else
      {
      monat=wort.substring(wort.indexOf(" ")+1,wort.length);
      monat=monat.substring(0,monat.indexOf(" "));
      if(wort.search("Jan")!=-1)monat="01";
      if(wort.search("Feb")!=-1)monat="02";
      if(wort.search("Mar")!=-1)monat="03";
      if(wort.search("Apr")!=-1)monat="04";
      if(wort.search("May")!=-1||wort.search("Mai")!=-1)monat="05";
      if(wort.search("Jun")!=-1)monat="06";
      if(wort.search("Jul")!=-1)monat="07";
      if(wort.search("Aug")!=-1)monat="08";
      if(wort.search("Sep")!=-1)monat="09";
      if(wort.search("Oct")!=-1||wort.search("Okt")!=-1)monat="10";
      if(wort.search("Nov")!=-1)monat="11";
      if(wort.search("Dec")!=-1||wort.search("Dez")!=-1)monat="12";
      datwort=datwort+wort.match(/dd/)+"."+monat+"."+wort.match(/dddd/);
      }
   document.write(datwort);
</script>

Dies sollte nun eine Weile halten. Einen Schönheitsfehler gestehe ich gerne: Was, wenn die Angabe auf „März“ lautet? Wonach muß man suchen? Etwa nach „M&a“? Wie wird intern das „ä“ behandelt?

Wer es weiß, lasse mich nicht dumm sterben.

Dieses Tutorial wurde bereitgestellt von Prof. Dr. Rolf Hirte, Technische Fachhochschule Wildau. Vielen Dank an dieser Stelle!
Viel Spass beim Lernen und beim Erstellen eigener JavaScripts.