|
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 anzeigenDas letzte Bearbeitungsdatum kann JavaScript selber bestimmen. Es kennt nämlich eine Eigenschaft des Objektes document,die lastModified heißt und das Speicherdatumder Seite ausgeben kann.
Allerdings: Ohne Pferdefuß geht es nicht. (Achtung,dies Pferd wird dreibeinig!)1. Nicht alle Server liefern das Speicherdatum richtigzurück. Da hilft Ausprobieren, gegebenfalls Resignieren. 2. Ruft man direkt diese Eigenschaft auf, wozu das folgendegenügt:
<script language=JavaScript>
document.write("Letzte Änderung:" + document.lastModified);
</script> |
dann wird, wie es sich bei Windows gehört, das Datumim amerikanischen Format samt kompletter Uhrzeit ausgegeben:
Da ich kein Ami bin, will ich das nicht. Wenn Sie dagegenNetscape unter dem internationalen LINUX benutzen, stehthier 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 Positeonen, 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(/\d\d/)+"."+monat+"."+wort.match(/\d\d\d\d/);
}
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.
|
|
|