JS wird nach Ändern der Fenstergröße nicht mehr ausgeführt
Detlef Garte
- javascript
Hallo Forum,
vielleicht errrinnert Ihr Euch noch: Vor einiger Zeit hatte ich (mit Eurer Hilfe) eine Funktion gebastelt, die in der HTML-Datei das Datum des letzten Speicherns darstellt.
Hier noch mal der zwischen die BODY-Tags einzufügende Quelltext:
<SCRIPT LANGUAGE="JavaScript">
<!--
function initArray() {
this.length = initArray.arguments.length
for (var i = 0; i < this.length; i++)
this[i+1] = initArray.arguments[i]
}
var MOYArray = new
initArray("January","February","March","April","May","June","July","August","September","October","November","December");
var LastModDate = new Date(document.lastModified);
document.write("Last Update ");
document.write(LastModDate.getDate(),". ",MOYArray[(LastModDate.getMonth()+1)]," ");
document.write(LastModDate.getYear()+1900);
document.write(" by <a href="mailto:gar@ep-ag.com">Detlef Garte</a>");
//-->
</SCRIPT>
Das Teil läuft zur absoluten Zufriedenheit - bis mir heute ein Anwender sagte, daß nach einem Verändern der Größe des Browserfensters nix mehr dargestellt wird. Recht hat er!
Aber woran kann das liegen?
Danke im Voraus
Detlef
Die Suche im Forums-Archiv hat doch noch was gebracht:
Wenn ich nun
<BODY onResize=location.reload()>
eintrage, wird die Seite neu geladen und somit der Inhalt komplett dargestellt. _Mit_ dem "gesüpeichert am"-Teil.
ABER: Als Datum wird generell der 1. Januar 1970 eingetragen... <ROFL>
Bye
Detlef
Die Suche im Forums-Archiv hat doch noch was gebracht:
Wenn ich nun
<BODY onResize=location.reload()>
eintrage, wird die Seite neu geladen und somit der Inhalt komplett dargestellt. _Mit_ dem "gesüpeichert am"-Teil.
ABER: Als Datum wird generell der 1. Januar 1970 eingetragen... <ROFL>
Hi Detlef,
ich vermute, dass das einfach dadran liegt, dass er die Seite dann nicht real laedt, sondern die Kopie in Deinem Cache benutzt. Versuch einfach mal folgendes bei den Meta-Tags einzufuegen und pruef mal nach, ob das hilft: "<META HTTP-EQUIV="expires" CONTENT="0">"
Bis danndann
Michael N.
Hallo Michael,
war leider nix, darum noch mal konkret:
Der Inhalt des HTML-Files wird (Dank des <BODY onResize=location.reload()>) korrekt dargestellt, wenn jedoch das Browserfenster in der Größe geändert wird, wird als Datum _nicht_ mehr das Speicherdatum dargestellt, sondern der Beginn aller Zählungen (1.1.1970).
Offenbar also ein Fehler (?) im Javascript bei "document.lastModified" - oder?
Detlef
Hallo Detlef!
Du koenntest mal folgendes versuchen. Im <HEAD>:
var lm;
var MOYArray = ["January", "February", "March", "April", "May", "June", "July",
"August", "September", "October", "November", "December"];
/* sieht etwas einfacher aus als ein initArray-Objekt, oder? */
if (!lm) lm = new Date(document.lastModified);
Dann im <BODY>:
document.write("Last Update ");
if (lm.getTime() == 0)
document.write("Unknown");
else
document.write(lm.getDate(), ". ", MOYArray[lm.getMonth()], " ", 1900+lm.getYear());
Ich hoffe, durch die Abfrage if (!lm) wird das Date-Objekt nur einmal erzeugt und dadurch auch nur einmal die lastModified-Zeit abgefragt wird. Das setzt voraus, dass das Objekt bei einem Resize nicht geloescht wird bzw. die Variablen ueberhaupt zurueckgesetzt werden.
Die Sache mit dem 1.1.1970 passiert immer dann, wenn die lastModified-Zeit nicht bekannt ist, weil sie z.B. der Webserver nicht mitgesendet hat. Deshalb frage ich erst ab, ob getTime() 0 liefert - das ist naemlich genau der 1.1.1970. (Siehe dazu http://developer.netscape.com/docs/manuals/js/client/jsref/document.htm#1193811) Warum die lastModified-Zeit nach einem Resize ploetzlich nicht mehr zur Verfuegung steht, weiss ich zwar nicht, hoffe aber, das mit dem nur-einmal-abfragen abfangen zu koennen.
Ja, versuch einfach mal und sag uns, was dabei rauskommt.
Bye, Calocybe
Hallo Calocybe,
Klar sieht das besser aus!
(Und statt
document.write(lm.getDate(), ". ", MOYArray[lm.getMonth()], " ", 1900+lm.getYear());
funzt
document.write(lm.getDate(), ". ", MOYArray[lm.getMonth()+1], " ", 1900+lm.getYear());
<g>)
_ABER_: Nach einem Ändern des Fensters (Du ahnst es schon): "Unknown". (Wenigstens bekommt der Nutzer jetzt nicht irgendwelchen Blödsinn angezeigt.)
Bye
Detlef
Hallo nochmal,
der Hintergrund (nach "ewiger" Suche im Forumsarchiv) ist das "...Netscape-typische Problem des Verlustes von Javascript-Variablen bei einer Größenveränderung des Browserfensters" !!!!!!!!!
Und ich bin fester Anhänger des NN!!!
Ich werde das nun mit einer Abfrage nach dem verwendeten Browser und (falss NN) per Cookie lsöen. (Ist ja IntraNet)
Danke
Bye
Detlef