Detlef Garte: JS wird nach Ändern der Fenstergröße nicht mehr ausgeführt

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

  1. 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

    1. 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.

      1. 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

  2. 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

    1. 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

    2. 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