Problem mit Datumsanzeige
Hallo,
ich möchte mit Javascript das Änderungsdatum der HTML-Seite anzeigen lassen. Dies funktioniert offline, aber nicht online. Da wird der heutige Tag angezeigt und es erscheint eine Fehlermeldung im Browser unten links "Fehler auf dieser Seite". Kann an der angegbenen Stelle aber keinen finden: Zeile 21, Spalte 60. Der Pfad zum Script stimmt, da der Rest des Datums (Monat und Jahr) richtig angezeigt wird, nur nicht der richtige Tag.
Das folgende Script befindet sich in einer externen Datei updatum.js:
function datum(){
mn = new Array("Jan.","Febr.","März","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez.");
d = new Date(document.lastModified);
m = mn[d.getMonth()];
t = d.getDate();
jj = d.getYear();
j = (jj>=2000)?jj:((jj<80)?jj+2000:jj+1900);
dat = (t+". "+m+" "+j);
}
Die funktion wird in der HTML mit folgenden Code aufgerufen:
head
<script src="./scripte/updatum.js" type="text/javascript"></script>
/head
body
<SCRIPT language="JavaScript" type="text/javascript">datum(); document.write("Stand: " + dat );</SCRIPT>
/body
Wo könnte der Fehler liegen?
Danke!
Antwort schreiben
Antwort 1 von gast42 vom 13.02.2022, 21:57 Options
Wie alt ist das denn?
etwas aktualisiert sollte das so aussehen:
function datum(){
var mn = ["Jan.","Febr.","März","Apr.","Mai","Juni","Juli","Aug.","Sept.","Okt.","Nov.","Dez."];
var d = document.lastModified;
d= (!d || d=="")? (new Date()) : (new Date(d));
var m = mn[d.getMonth()];
var t = d.getDate();
var j = d.getFullYear();
return t+". "+m+" "+j;
}
sinnvoller Einbau über:
<script type="text/javascript">document.write("Stand: " + datum());</script>
Bitte teste dies im Firefox und schaue in dessen Fehlerkonsole (Menü Extras), der Internet-Explorer ist als JavaScript-Test- und Entwicklungsumgebung komplett ungeeignet, u.a. aufgrund seiner nichtssagenden Fehlermeldungen.
Antwort 2 von JuergenB vom 14.02.2022, 09:30 Options
Das Script habe ich irgendwo mal gefunden.
Danke für deine Hilfe.
Werde es ausprobieren.
Antwort 3 von JuergenB vom 16.02.2022, 10:04 Options
Leider noch der gleiche Anzeige-Fehler.
Habe keinen Firefox installiert. Arbeite noch mit Win98.
Antwort 4 von JuergenB vom 16.02.2022, 10:44 Options
Ich habe gerade im Internet gelesen, dass die lastModified Methode online nicht funktioniert, da immer das Abrufdatum der HTML-Seite als aktuelles Datum angezeigt wird. Stimmt das?
Gibt es sonst eine andere Möglichkeit mit Javascript?
Antwort 5 von gast42 vom 16.02.2022, 17:38 Options
Zitat:
immer das Abrufdatum der HTML-Seite als aktuelles Datum angezeigt wird
das ist Blödsinn!
Allerdings ist es so, dass zB. Seiten, die per PHP oder ähnlichem auf dem Server zusammengestellt werden, damit auch erst im Moment des Aufrufs erstellt werden (betrifft somit Seiten mit der Endung
php).
Bei Seiten mit der Endung
htm,
html wird das letzte Änderungsdatum auf dem Server angegeben. Dabei kann aber der Server zB. in den USA oder Australien stehen und somit dessen Zeit ein bisschen von der hiesigen abweichen.
Außerdem gibt es einige Browser, die
lastModified nicht unterstützen, aber mein obiger Code ersetzt in dem Fall
lastModified einfach durch das aktuelle Datum.
Antwort 6 von gast42 vom 16.02.2022, 17:41 Options
Ach so: such dir eine ältere Firefox-Version und installiere die, bis Firefox 2.0 müsste das mit Win 98 klappen, und den findest du auch noch zum Download im Netz.
Antwort 7 von JuergenB vom 16.02.2022, 22:34 Options
Antwort 8 von gast42 vom 16.02.2022, 23:58 Options
Ja, und? Ich kenne den Thread, der ist ja mangels Rückmeldung des Fragers nie beendet worden. Hast du deinen Code daraus? Das war doch dort schon als veraltet gekennzeichnet.
2 Fragen:
Was sagt der Firefox?
Ist deine Seite eine PHP-Seite?
Beides sind auch in dem Beitrag von 2007 ungeklärte Fragen!
Es würde dir sehr helfen, wenn du hier einfach den Link zu deiner Seite preisgeben könntest!
Antwort 9 von JuergenB vom 17.02.2022, 10:06 Options
...auch der neue Code von dieser Seite funktioniert nicht.
Hier meine
Webseite, die es betrifft.
Vielleicht funktioniert es auf deinen Browser. Bei den meisten Seiten müsste als Änderungsdatum der 15. Febr. 2010 erscheinen. Aber es erscheint überall bei mir das heutige Datum.
Antwort 10 von son_quatsch vom 17.02.2022, 10:30 Options
Du meinst im Frame unten links, wo bei mir
Zitat:
Stand: 1. Jan. 1970
steht? :-)
Antwort 11 von son_quatsch vom 17.02.2022, 10:55 Options
Also ganz konkret:
Firefox 3.3.5: "Stand: 17. Febr. 2010"
Opera 10.10: "Stand: 1. Jan. 1970"
IE 6.0: "Stand: 17. Febr. 2010"
Safari 4.0.4: "Stand: 17. Febr. 2010"
...aber du willst ja gestern, richtig? Ich denk mal, hier zählt wirklich für jeden Browser seine lokale Datei, wenn überhaupt. Also mal hypothetisch angenommen jeder Browser leert seinen Cache bis morgen nicht - dann könnte morgen vielleicht immernoch "17. Febr." dastehen. Aber das Skript selbst kann auch Schuld sein, da es im Zweifelsfall das heutige Datum nimmt...
Antwort 12 von JuergenB vom 17.02.2022, 14:23 Options
@son_quatsch
Zitat:
...aber du willst ja gestern, richtig?
Nein, ich möcht. dass das Datum angezeigt wird, an dem die Datei lokal auf meinem Rechner geändert wurde, nicht wenn sie hochgeladen oder vom Server abgerufen wurde. Beim IE und Firefox ( die ich auch getestet habe) müsste es bei fasst allen Seiten so lauten: "Stand: 15. Febr. 2010"
Wie ich schon bei meiner Suche im Internet gefunden habe, interpätiert jeder Browser den Aufruf
lastModified anders, das wäre ja noch hinzukriegen. Aber das Anzeigen des gewünschten Datums nicht, wie schon in meiner Fragestellung beschrieben, funktioniert es offline ohne Probleme, nur nicht wenn die Seiten vom Server aufgerufen werden.
Das Problem lässt sich warscheinlich nur mit PHP lösen, aber das bietet mein Server nicht.
Antwort 13 von JuergenB vom 17.02.2022, 14:29 Options
Nachtrag:
Ich werde nochmal das Script ändern, so das im Zweifelsfall nicht das heutige Datum genommen wird. Hatte ich aber Ursprünglich schon, mit dem gleichen Problem.
Antwort 14 von son_quatsch vom 17.02.2022, 14:59 Options
Beim tranferieren von Dateien gehen deren Metainformationen und Attribute meist verloren. Überlegen wir kurz die Wegstrecke:
1.) Du lädst die Seite auf den Server hoch. Per HTTP? Dann ist das Dateidatum in jedem Fall verloren. Per FTP? Dann muss der Server erstmal den Dateizeit-Befehl unterstützen.
2.) Auf dem Server existiert jetzt eine Kopie deiner Datei - die dort zu dem Zeitpunkt ERSTELLT wurde, an welchem sie hochgeladen wurde. Mit etwas Glück wird per FTP der von dir verwendete Zeitstempel übernommen.
3.) Der Server verschickt per HTTP an jeden anfragenden Client die Datei inklusive DATE-Header. Letzterer dient jedoch dem Client (sprich Browser) in erster Linie dazu, zu erkennen, ob sich die Datei seit dem letzten Aufruf geändert hat - und nicht, um eine etwaige lokale Kopie (die als Cache fungiert) ebenfalls wieder mit dem entsprechenden Zeitstempel zu versehen. Es ist auch gar nicht gesagt, ob die Angabe von DATE der Dateizeit entspricht.
Um es abzukürzen: ja, mach es per PHP. Damit kannst du zumindest die Dateizeit der PHP-Datei ermitteln - auch wenn das vielleicht nur der Zeitpunkt des hochladens war. Aber du musst nicht mehr auf die unterschiedliche Darstellung der Browser achten und kannst obendrein dein Anzeigeformat völlig selbst bestimmen... und musst auch kein JavaScript verwenden.
Aber ganz ehrlich: bei der Seite und den Techniken hab ich so meine Zweifel, ob dir PHP eine Hilfe sein wird...
Antwort 15 von JuergenB vom 17.02.2022, 15:16 Options
PHP funktioniert auf meinen Server nicht. Es würde ja reichen, das Datum anzuzeigen, wann die Datei hochgeladen wurde, also auf dem Server erneuert wurde. Die Seite(n) wurden somit auch aktuallisiert. Ob das mit Javascript möglich ist?
Antwort 16 von son_quatsch vom 17.02.2022, 15:33 Options
Neihen!
JavaScript legt erst im Browser los. Da ist der Server schon lange fertig. Deswegen "klappt" das auch bei dir lokal alles - weil dort der Weg Server->Browser nicht gegeben ist.
Antwort 17 von gast42 vom 17.02.2022, 16:34 Options
Angesichts deiner technischen und fachlichen Voraussetzungen empfehle ich dir auf jegliche Skripte zu verzichten und das gewünschte Datum einfach von Hand einzutragen.
Antwort 18 von JuergenB vom 17.02.2022, 22:21 Options
Ok, danke!
Um die Sache etwas zu automatisieren habe ich mir ein Script erstellt, dass mir halt das Änderungsdatum gleich in alle Seiten einträgt. So brauche ich das Datum nur einmal einzugeben.
function update() {
var Datum = "10.02.2010" // Datum manuell eingeben!!
var wo = document.getElementById("geaendert");
if (wo) wo.firstChild.data = "Stand: " + Datum;
}
window.onload = function() { update(); }
<body>
<span id="geaendert"> </span>
</body>
Antwort 19 von gast42 vom 18.02.2022, 05:57 Options
die Art der Einbindung gibt Konflikte mit
<body onload="bilderinit()" ...>
Du hast dann 2 x onload und der Browser muss sich für eins davon entscheiden.
Abhilfe: schmeiß bei body das
onload="bilderinit()" raus und ergänze dein Skript in dieser Art:
window.onload = function() {
update();
bilderinit();
}
Das ist zudem übersichtlicher, da dann nicht im ganzen Quelltext irgendwo JavaScript-Schnippselchen versteckt sind.
Antwort 20 von JuergenB vom 18.02.2022, 09:12 Options
Es ist wohl doch besser das Datum bei einer Seitenänderung gleich mit zu ändern, wenn man einmal auf der Seite ist. Es ist aber so, dass man es mal vergessen kann, da es woanders steht als der eigentliche Text.
Danke nochmal für euere Unterstützung.